この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ベルリンの半瀬です。
はじめに
前回に引き続いて、Zendesk、APIGateway、Lambdaの記事です。今回は Zendeskのチケット内容をBacklogに投稿してみます。
やったこと
- Lambdaファンクションを準備
- APIGatewayを準備
- Zendesk拡張機能を準備
- Zendeskトリガーを設定
Lambdaファンクションを準備
pythonで用意します。
from __future__ import print_function
import requests
import datetime
from pytz import timezone
def lambda_handler(event, context):
duedate = datetime.datetime.now(timezone('Asia/Tokyo')) + datetime.timedelta(days=1)
url = event['Uri']
headers = {
"Content-Type": event['HeaderContentType']
}
params = {
"apiKey": event['apiKey'],
"projectId": event['projectId'],
"issueTypeId": event['issueTypeId'],
"assigneeId": event['assigneeId'],
"priorityId": event['priorityId'],
"dueDate": duedate.strftime('%Y-%m-%d'),
"summary": event['summary'],
"description": event['description'],
}
req = requests.post(url, headers=headers, params=params)
res = req.content
print(res)
return res
「dueDate(Backlogの期限日)」をファンクション側で指定している以外は、基本的に(Zendesk)トリガーから渡されるjsonに依存します。
※投稿画面サンプル(Backlog)↓
Baclogチケット「詳細」に、Zendeskチケットの内容が入ります。また、件名も合わせています。
期限日は登録日の翌日です。
APIGatewayを準備
APIGatewayからLambda関数を起動します。
以下を参考に設定します。
- 初めてのAPI Gateway - Developers.IO
- (初心者向け)APIGatewayとLambdaの導入事例について話してきました - Developers.IO
- Amazon API Gateway – API作成から動作確認までやってみる - Developers.IO
詳細は割愛します。
Zendesk拡張機能を準備
外部ターゲットへの通知 - Zendesk
を参考に、拡張機能「HTTPターゲット」を使って、APIGatewayにjsonをpostするような設定を行います。
※設定画面
↑「URL」箇所にAPIGatewayのパスを記載。
Zendeskトリガーを準備
トリガー設定で以下のjsonを渡すように設定します。
{
"HeaderContentType": "application/x-www-form-urlencoded",
"Uri": "https://XXXXX.backlog.jp/api/v2/issues",
"apiKey": "<任意のbacklogユーザーで発行されたBacklog APIキー>",
"projectId": "<投稿したいbacklogプロジェクトID>",
"issueTypeId": "<任意のbacklogチケットタイプID>",
"assigneeId": "<アサインされる担当者ID>",
"priorityId": "<優先度>",
"summary": "{{ticket.title}}",
"description": "{{ticket.description}}"
}
IDは適宜調べておきましょう。
今回はチケットタイプIDや、初期アサインする担当者を固定する必要があったので、項目を作っています。必要に応じてLambda関数と、トリガーで渡すjsonを調整すると良いかと思います。
※参考Backlog API とは - nulab Developers
※Zendesk設定画面
あとはお好みでトリガーの実行条件を整えて完成です。
さいごに
プログラミングには余り慣れていないのでpythonで少しつまったのですが、パパッと書いて乗っけるだけで簡単に動いてくれるAPIGatewayとLambdaに感動していました。
それではー。