Smart at message for kintoneとTwilioを連携させる方法


はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズのTwilio事業部エバンジェリストの高橋です。

今回は、M-SOLUTIONSさんが提供しているSmart at message for kintoneのWebhook機能を利用して、kintone上でなんらかのトリガーを検出したときに、Twilio経由でSMSを送信する方法を説明します。

準備

まずは、Smart at messageのトライアル版を申し込みましょう。
こちらのページの下の方に、kintoneサービス無償トライアル実施中というバナーがあるので、そちらから申し込みを行います。
申込みが完了すると、プラグインのダウンロードリンクや、利用方法のドキュメントがメールで届きます。

ダウンロードしたプラグインのZIPファイルは、以下の手順を参考にkintoneにセットアップしておきましょう。
kintoneにプラグインをインストールする

次にTwilioのアカウント準備です。
以下の記事を参考に、まずはTwilioのトライアルアカウントを作成しましょう。
Twilioのサインアップ
今回はトライアルアカウントでも大丈夫です。

注意
トライアルアカウントでは、以下の制限があります。

  • 電話番号は1つしか購入できません。
  • SMSは認証済み番号として登録した電話番号にしか送信できません。
  • トライアルアカウントから送信した旨のメッセージがSMSに追加されます。
  • 500円分のポイントが付与されていますが、ポイントがなくなった時点でサスペンドされます(アップグレードすればそのまま利用できます)。

ハンズオン

シナリオ

今回は以下のシナリオで進めます。

kintone上に、以下のようなアプリを作成します。

何かを承認してほしい人がこのアプリに起案内容と通知先を登録しておき、上司がこれを確認して承認もしくは否認を行います。そのときにメッセージを登録することができます。承認もしくは否認の状態でレコードを保存すると、Smart at messageのWebhook通知を使って、Twilio経由でSMSが送信されます。このとき、承認もしくは否認というステータスと併せて、登録されたメッセージがSMSに記載されます。

作業手順

  1. まずは上記の図のようにkintoneアプリを作成してください。起案内容と通知先を必須項目にしています。
  2. 承認のプルダウンには、「未処理」と「承認」「否認」の3つの選択肢を設定し、「未処理」をデフォルト値にしています。
  3. 本来はメッセージフィールドと承認フィールドは、上司のみがアクセス権を持つように設定しますが、今回はこの部分は割愛します。フィールドにアクセス権を設定する方法は、こちらを参考にしてください。

作業1. Twilio側で電話番号を購入する

  • Twilioの管理コンソールにログインします。
  • スライドバーボタン(左側のボタンアイコン)を押して、スライドメニューを開き、Phone Numbersを選択します。

  • 番号を購入を選択します。

  • COUNTRYのプルダウンから「United States(+1)」を選択し、さらに機能の中のSMSにチェックを入れて、検索ボタンを押します。

  • 番号のリストが表示されるので、TYPEがローカルと書かれているいずれかの番号の右側にある購入ボタンを押します。

  • さらに、Buy(xxx)xxx-xxxxというボタンを押して番号を購入します。後ほど購入した電話番号を使うので、+1から始まる番号をメモ帳などに控えておいてください。

  • 番号の設定画面が表示されるので、VoiceセクションのA CAQLL COMES INにデフォルトで表示されているURLを削除します。

  • 同じくMessagingセクションのA MESSAGE COMES INにデフォルトで表示されているURLも削除します。

  • 一番下にあるSaveボタンを押して設定を保存します。今回はこちらからSMSを送信するだけなので、この作業によって、電話やメッセージを着信した場合にも無駄な費用が発生しなくなります。

作業2. SMSを送信するプログラムを作る

  • スライドバーボタンを押して、スライドメニューを開き、Functionsを選択します。
  • 設定を選択します。

  • Enable ACCOUNT_SID and AUTH_TOKENというチェックボックスをONにします。

  • Environment Variablesセクションの赤いプラスアイコンを1度押します。

  • 追加されたKEY欄に、「FROM_NUMBER」、VALUE欄には先程購入した電話番号を+1からスペースを開けずに登録します。

  • 画面下部にあるSaveボタンを押します。

  • つぎに、Functionsメニューから管理を選択します。

  • Create a Functionボタンを押すか、赤いプラスアイコンを押して新しいFunctionを作ります。

  • テンプレート選択ダイアログが表示されるので、Blankを選択して、Createボタンを押します。

  • FUNCTION NAME欄に「Trigger」と入力します。

  • PATH欄に「/trigger」と入力します。

  • ACCESS CONTROLのチェックボックスは外します。

  • CODE欄に書かれているプログラムはすべて削除し、代わりに以下のコードを貼り付けます。

exports.handler = function(context, event, callback) {
    const client = context.getTwilioClient();
    const to = `+81${event.Number.slice(1)}`;  // E.164形式に変換
    const body = `結果:${event.Approval} メッセージ:${event.Message || "メッセージなし"}`;
    client.messages.create({
        body: body,
        from: context.FROM_NUMBER,
        to: to
    })
    .then(message => { // 送信成功
        console.log(`Message sent. ${message.sid}`);
        callback(null, 'OK');
    })
    .catch(err => { // 送信失敗
        console.log(err);
        callback(new Error(err));
    });
};
  • Saveボタンを押します。
  • PATH欄の右側にあるコピーアイコンをクリックして、URLをクリップボードにコピーします。

  • このURLは後ほど利用するので、メモ帳などに保存しておきます。

以上でTwilio側の設定はすべて終了です。

作業3. kintoneアプリにプラグインを設定する

今回は以下のようなアプリを作ってあるという前提で進めます。

各フィールドコードは上記の通りに設定しておいてください。

  • アプリの設定を変更するアイコン(歯車アイコン)を押します。
  • 設定タブを開きます。
  • プラグインをクリックします。

  • 画面上部にあるプラグインの追加をクリックします。

  • 「Smart at message for kintone v2.0.1」を選択し、追加ボタンを押します。

  • 追加されたプラグインの設定アイコン(歯車アイコン)をクリックします。

  • プロダクトキーは、トライアルの場合は空にします。

  • 利用する通知手段として、「Webhook」を選択します。

  • 条件通知セクションの通知を有効にするにチェックを入れます。

  • レコード条件のプルダウンから、「Approval」を選択します。

  • その右側は「次のいずれかを含む」にしておきます。

  • その右側の条件設定のところは、「承認」と「否認」の2つを選択します。

  • その下は「いずれかの条件を満たす」を選択します。

  • 通知先の追加ボタンを押して、ダイアログを開きます。

  • 「Webhook」を選択し、Webhook URL欄に、手順2でメモ帳に控えておいたFunctionsのURLを記載します。

  • 表示名には「Trigger」と入力し、追加ボタンを押します。

  • Webhook用POST Bodyに、以下のJSONを指定します(通知先電話番号、メッセージ、承認否認の情報がTwilioに渡るようになっています)。

{
    "Number":"%%Number%%",
    "Message":"%%Message%%",
    "Approval":"%%Approval%%"
}
  • 画面上部の保存ボタンを押します。
  • アプリの設定画面に戻り、アプリを更新ボタンを押します(これを忘れると設定が保存されません)。
  • 「アプリの変更を運用環境に適用します。よろしいですか?」と聞かれるので、OKボタンを押します。

手順4. テスト

  • アプリの新しいレコードを追加してみましょう。
  • 通知先にSMSを送信する先の電話番号を指定し、メッセージ(必須ではないです)を入力したら、承認もしくは否認を選択してレコードを保存します。
  • 無事にSMSが通知されれば成功です。

まとめ

kintoneのJavaScriptを使っても同様の作業が可能ですが、Smart at messageを利用するとかんたんにSMS連携が実装できます。
SMS以外にも、たとえば電話を自動でかけて、指定したメッセージを流すなどの応用も可能ですので、ぜひ色々と試してみてください。


Twilio(トゥイリオ)とは

https://cloudapi.kddi-web.com
Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。