将任务从 ChatWork 复制到 Backlog

您好,我是网络系统开发部的 Goto。
我们公司使用 ChatWork,虽然任务是在 ChatWork 上分配的,但
如果任务太多,就容易丢失,或者难以理解优先级和截止日期。
另一方面,Backlog 允许您使用甘特图管理任务,从而轻松了解截止日期和重要性。
因此,我编写了
一个将任务从 ChatWork 移动到 Backlog 的流程希望它能对那些正在考虑使用 ChatWork API 或 Backlog API 的人有所帮助。
我们将逐一介绍各项功能。
1. 从 ChatWork 获取任务
您需要四项信息才能从 ChatWork 中检索任务。
- 负责该任务的人员的帐户 ID
- 分配任务者的账号 ID
- 分配任务的聊天室 ID
- 选择已完成或未完成的任务
以下列出了所有这些信息。
- “To”后面的数字表示任务的分配人
- To: 后面的数字表示分配任务的人
- https://www.chatwork.com/#!rid 此处填写号码(rid 不是必填项)
- 已完成:未完成
通过将这些参数作为 GET 参数添加到 URL 中并发出请求,任务信息将以 JSON 格式返回。
function get_tasks_from_cw($account_id, $assigned_by_account_id, $room_id){ $params = array( 'account_id' = $account_id, // 任务分配者的 ID 'assigned_by_account_id' = $assigned_by_account_id, // 任务分配者的 ID 'status' = 'open', // 任务状态:打开 ); $url = 'https://api.chatwork.com/v1/rooms/'.$room_id.'/tasks?'.http_build_query($params); $headers = array( 'http' => array( 'method' = 'GET', 'header' = implode("rn", $headers), ) ); $json_cw_tasks = file_get_contents($url, false, stream_context_create($context)); return json_decode($json_cw_tasks); }
2. 在待办事项列表中登记问题
在 Backlog 注册需要以下项目。
- 项目ID注册
- 问题类型 ID
- 优先事项
- 议题主题
具体设置如下:
-
- 您可以通过项目“项目设置”页面的 URL 确定要注册的项目 ID。
https://byd.backlog.jp/EditProject.action?project.id=此处填写编号
-
- 有关作业类型,请参见 2-a。
- 优先级为:2 为高,3 为中,4 为低
- 请随意选择主题。
function add_task_to_backlog($task, $project_id, $backlog_api_key){ $issue_type_id = get_issue_type_id_of_tasks($project_id); //获取任务的 issueTypeId mb_regex_encoding('UTF-8'); $params = array( 'projectId' = $project_id, 'issueTypeId' = $issue_type_id, 'priorityId' = 3, //中等优先级 'summary' = '来自 ChatWork 的任务', 'description' = $task['body'], //要注册的问题内容(从 CW 获取的任务文本(正文)) ); $url = 'https://space_name.backlog.jp/api/v2/issues?apiKey='.$backlog_api_key'&'.http_build_query($params, '&'); $header = array('Content-Type:application/x-www-form-urlencoded'); $context= array( 'http' => array( 'method' = 'POST', 'header' = $header, 'ignore_errors' = true, ) ); file_get_contents($url, false, stream_context_create($context)); }
2-a. 获取问题类型“任务”的 issueTypeId
问题类型取决于项目,因此我们将通过 API 获取该项目的 issueTypeId。
在本例中,我们将获取“任务”类型的 issueTypeId。
这里不需要使用 curl。我刚刚试过了。
function get_issue_type_id_of_tasks($project_id, $backlog_api_key){ $param = array('apiKey' = $backlog_api_key); $url = 'https://space_name.backlog.jp/api/v2/projects/'.$project_id.'/issueTypes?'.http_build_query($param); $ch = curl_init(); $options = array( CURLOPT_URL = $url, CURLOPT_HTTPGET = true, CURLOPT_HTTPHEADER = array( 'HTTP/1.0', 'Content-Type: application/x-www-form-urlencoded', ), CURLOPT_RETURNTRANSFER = true, ); curl_setopt_array($ch, $options); $issue_type_json = curl_exec($ch); $issue_types = json_decode($issue_type_json); //返回值为检索到的、类型为“Task”的问题的 ID。 foreach ($issue_types as $issue_type) { if ($issue_type->name == 'Task'){ $issu_type = $issue_type->id; } } return $issu_type; }
大致情况是这样的。
ChatWork 任务有一个 limit_time 元素,可以用来获取截止日期的时间戳,因此,
如果您在将任务注册到待办事项列表中时将其转换为 dueDate 参数,您也可以复制截止日期,这非常方便
。
如果您觉得这篇文章有帮助,请点赞!
0