システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでのネタはこちら
あるお客様から Zendesk と Questetra の連携についてご相談をいただき、実現方法を調べましたので紹介します。
今回のケースでは、すでに Zendesk support を運用されていて、Zendesk support でチケット作成した時やチケットステータスを「解決済み」に変更した時に Questetra にデータを渡して、処理時間の計測をしたり、負荷状況を見たい、というものでした。
※Zendesk support でも時間計測する仕組みはあるのですが、要件にあわない部分があったとのこと。
Questetra は、http リクエスト or メール受信で業務フローが開始できます。Zendesk support から Questetra の求める形で http リクエストの送付がでできるのかを調べてみました。
2: Zendesk から Questetra の業務フローを開始する設定の詳細
3: 残りの部分の設定
4: まとめ
1: Zendesk から Questetra に http リクエストを送付する方法
調べたところ、Zendesk 側でまず「ターゲット」で URL を指定しておき、何らかのイベント発生時に「トリガ」を起動するようにして、その「ターゲット」に対してデータを送ることができる、ということでした。
その仕組みを使えば、チケット登録やチケットステータス変更時に Questetra の業務フローを開始する(「メッセージ開始イベント(http)」をたたく)といったことが実現できそうです。
2: Zendesk から Questetra の業務フローを開始する設定の詳細
まず、Questetra アプリ(「アプリA」とする)で「メッセージ開始イベント(http)」を準備し、「アプリA」をリリースして、受けるための URL とリクエストパラメータを確定させます。
※「メッセージ開始イベント(http)」についての詳細は以下ページを参照ください。
M221: 特定URIにHTTPリクエストがあった時に自動的に開始されるように設定する
※アプリがリリース済で、(開発中ではなく)リリース済のバージョンの「メッセージ開始イベント(HTTP)」のプロパティ画面内の「URL・パラメータ詳細」を開くと URL 等の情報が表示されます。
※初期設定では、外部システムから「メッセージ開始イベント(HTTP)」で http リクエストを受ける設定が不可になっていますので、それを「システム設定」から許可が必要です。ご留意ください。
※以前とは違って、key はイベントごとに異なるものとなります。ご留意ください。
次に、Zendesk の「ターゲット」では以下のような設定をします。
また「トリガ」では以下のような設定をします。
これで Zendesk でチケット作成すると、Questetra にデータが送付され、業務フローが開始されるようになりました。
※今回 Questetra 側ではプロセスデータ項目名に「フィールド名」を設定しています。それを設定していない場合にはパラメータ名は「data[0].input」といった書式になります。「フィールド名」については以下ページの「1. データ項目を1つ1つ追加する」「d. フィールド名 (オプション)」を参照ください。
M205: 業務に必要なデータ項目(データセット)を定義する
※Zendesk からはチケット id 等、Questetra 側でひもづけるために必要となるデータを渡すようにします。
3: 残りの部分の設定
処理時間の計測をするとなると、以下の対応が必要となります。
まだいろいろと設定が必要となるのですが、今回は Zendesk から Questetra にデータ送付する部分を主に伝えたかったテーマですので、詳細は割愛させていただき、別途とします。
- Questetra 側で、別の Questetra アプリ(「アプリB」とする)で「メッセージ開始イベント(http)」を準備し、リリースして URL 等を確定
- Zendesk でチケット作成時と同様に、Questetra側の URL にあわせて「ターゲット」を準備、またチケットステータスを「解決済み」に変えた場合の「トリガ」を準備、Zendesk からはチケットの id を渡すようにしておく
- Questetra「アプリA」は以下フローとしておく。
(Zendesk から受け取ったチケット id は起動時にデータ項目に保持)
フロー開始直後の日時(日時1)を保存するよう「サービスタスク(データ設定)」を準備。
「メッセージ受信中間イベント(http)」を準備して、チケット解決の場合に http リクエストを受けられるようにする。
http リクエストを受けたら、その日時(日時2)を保存するよう「サービスタスク(データ設定)」を準備。
経過時間の差分を計算するアドオンを使って、日時2と日時1の差分を求める。 - Questetra「アプリB」は以下フローとしておく。
Zendesk のチケットの id を元に「アプリA」のデータを検索して、該当するプロセスの id を特定(具体的には「スクリプトタスク(スクリプト工程)」で Questetra の「Workflow API」の「ProcessInstance」をたたいて、「アプリA」のデータを特定する)
そのプロセス id を使って「アプリA」の「メッセージ受信中間イベント(http)」に http リクエストを送付
- 時間計算(分)のアドオン
- Questera 自身の API をたたいて処理を自動化する方法
- 「Workflow API」の「ProcessInstance」(Questetra ログイン後の左メニューの「API マニュアル」から表示)
- 「Workflow API」の「ProcessInstance」の検索条件 xml(XML: Criteria for Process Instance Search)
※「スクリプト工程(スクリプトタスク)」についての詳細は以下を参照ください。
M230: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)
4: まとめ
ということで、Zendesk から Questetra にデータを送って連携することが実現できました。
これまでいろいろなクラウドサービスの連携設定を見てきましたが、ここまで柔軟に http リクエストを送付する設定ができるサービスは初めてでした。
※ちなみに、Questetra もそれに匹敵するレベルで柔軟な設定が可能です!
また今回は Zendesk から Questetra にデータを送るだけでしたが、Zendesk 側にも API があり、以下のような連携も実現できました。詳しくは別の記事でまとめることにします。
- Zendesk でチケット作成したら、Questetra にデータ送付して業務フロー開始
- Questetra で業務フローに沿って作業を進める
- Questetra で業務が完了したら、Zendesk にデータ送付してチケットを解決済に変更
Zendesk に限らずチケット管理の仕組みでは、処理の順序や途中の作業をモレなく実施するといったことを規定できません。が、Questetra と組み合わせることでそういった点をカバーできます。
もし、ご質問等がありましたら、お問い合わせフォームからご連絡ください。
Questetra の無料版(スタータープラン)登録はこちら
こちらの Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えますので、ぜひお試しください。
ピンバック: Zendesk とクラウドワークフローとの連携(Zendesk のチケット更新) – Questetra Support