APIGatewayでZendeskのチケット内容をBacklogに投稿する
ベルリンの半瀬です。
はじめに
前回に引き続いて、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に感動していました。
それではー。