SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

JIRAやConfluenceをもっと使いこなそう! エキスパートが教える、外部ツール連携術(AD)

Webhookを利用してチャットツール「HipChat」と外部ツールを連携させてみよう

JIRAやConfluenceをもっと使いこなそう! エキスパートが教える、外部ツール連携術 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Webhookを作成する

 先ほど作成した認証トークンを使用して、Webhookを作成します。

 Webhookの作成には次のREST APIを使用します。

/v2/room/<ルームIDまたはルーム名>/webhook

 こちらのURLに以下のJSONをPOSTすることで、Webhookを作成することができます。

{
url: <Webhookのリクエスト先URL>, <-----(1)
event:<Webhookを行うイベント> <-----(2)
}

 (1)でWebhookのリクエスト先のURLを指定します。

 (2)でWebhookを行うイベントを指定します。メッセージ投稿、ルーム入室、ファイルアップロードなどのイベントを指定することができます。

 実際にはcurlなどを使用して、以下の通りにREST APIを使用してください。作成した認証トークンは「auth_token」というリクエストパラメータで渡します。

curl -H 'Content-type: application/json' -X POST -d '{"url":"<ZapierのWebhookのURL>","event":"room_message"}' https://<HipChatサブドメイン>.hipchat.com/v2/room/Mochida-hidetoshi/webhook?auth_token=<REST API用の認証トークン>

 成功したらZapierで接続確認をします。

 「Test Webhooks by Zapier」画面の[OK,I did this]ボタンをクリックします。「Test Successful!」と表示されたら接続確認は成功です。[Continue]をクリックして次のアクションを作成していきます。

英語/日本語の判定処理

 HipChatで投稿されたメッセージが英語か日本語かを判定する必要があります。

 言語を自動で判別するアクションは用意されていないため、JavaScriptで簡易的な判定処理を実装します。

 [+]ボタンをクリックして[Action]を選択します。選択可能なアクションが表示されるので、[Code]を選択します。

 [Code]を選択すると、使用する言語をPythonかJavaScriptか選ぶ画面が表示されるので、[Run Javascript]を選択して[Save + Continue]をクリックします。

 「Set up Code by Zapier Run Javascript」画面で実際のコードを書いていきますが、HipChatのWebhookで受け取ったメッセージをJavaScript内で使用するためには、InputDataを設定する必要があります。

 画面の「Input Data」の左側にJavaScriptで使用する変数名、右側にどのWebhookのデータを使用するかを指定します。

 ここでは変数名に[message]、入力データに[Item Messsage Message]を指定します。

「Set up Code by Zapier Run Javascript」画面
「Set up Code by Zapier Run Javascript」画面

 「Code」には以下のコードを書きます。

var message = inputData.message;   // (1)
var from_lang = "en";
var to_lang = "ja";

if (/^[0-9\s\t\w“”!"#\$%&'’\(\)\*\+,-\./\:;<\=>\?\[\]\^`\{\|\}~]+$/.test(message)) { // (2)
  from_lang = "ja";
  to_lang = "en";
}
output = {from_lang: from_lang, to_lang:to_lang}; // (3)

 (1)設定画面の[InputData]で指定した値がこの変数に格納されます。HipChatに投稿されたメッセージを取得しています。

 (2)正規表現を使用して、メッセージが半角英数字・半角記号のみの場合は、英語と簡易的な英語/日本語判定をしています。

 (3)output変数にデータを格納することで、次のアクションに値を渡すことができます。翻訳元と翻訳後の言語をoutputに格納しています。

 コードを書き終えたら[Continue]をクリックし、次の画面でコードに問題がないかチェックします。

 [Create & Continue]をクリックして「Test Successful!」が表示されたら成功です。エラーが表示されたらコードを修正します。

メッセージの翻訳

 次にメッセージの翻訳を行います。Zapierでは翻訳用のアクションが用意されているので、こちらを利用します。

 [Code]を追加した時と同じように[+]ボタンからアクションの一覧を表示し、[Translate]を選択します。

 「Set up Translate by Zapier Text」画面で翻訳元と翻訳後の言語、翻訳を行うテキストを設定します。

 翻訳元と翻訳後の言語は 英語/日本語判定処理の結果によって動的に変更したいので、「Source Language」と「Target Language」に[Use a Custom Value(advanced)]を選択し、「Custom Value for Source Language」と「Custom Value for Target Language」に英語/日本語判定結果のfrom_langとto_langを選択します。選択後に[Continue]ボタンをクリックします。

次のページ
Zapierからメッセージをポストする

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
JIRAやConfluenceをもっと使いこなそう! エキスパートが教える、外部ツール連携術連載記事一覧

もっと読む

この記事の著者

持田 秀敏(リックソフト株式会社)(モチダ ヒデトシ)

 天下泰平をひそかに願う小市民な技術者です。Atlassian製品のJIRA製品群、Bitbucket、Bambooなど開発プロセスの技術コンサルからアドオン開発まで何でもやります。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10313 2017/10/02 19:08

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング