将任务从 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
加载中...
0 票,平均:0.00 / 10
938
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者