0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

Twilio で LINE WORKS から SMS 送受信

SMS が好きな人と LINE WORKS からやり取りする

LINE WORKS を中心にビジネスのやり取りをしています。お客さんや関係者さんとのコミュニケーション手段は様々です。LINE WORKS のトークも使いますが、電話、E-mail、Web 会議でのやり取りもあります。

そして SMS が主たる連絡手段という方もいます。携帯電話会社やその販売店の方達に多いですね。

SMS も LINE WORKS でやり取りできたらなという事で、Twilio API を使って LINE WORKS の Bot でやり取り可能にしてみました。

Microsoft Power Automate のクラウド フローを利用しています。

動作の様子

Twilio で取得した電話番号宛てに SMS が届くと、LINE WORKS の Bot とのトークルームにメッセージが転送されます。メッセージには返信ボタンがあります。これをクリックして返信メッセージを入力すると、Twilio 経由で相手に SMS で返信されます。

Power Automate のクラウド フロー

Microsoft Power Automate に Twilio SMS のコネクターがあったので、それを利用してみました。

ソリューションに、SMS 受信と SMS 送信の 2 種類のクラウド フローを作成しています。

l_147288799_3_c61c421e432b9543683911a52798cb6e.png

LINE WORKS の Bot API の botId, token, userId を、環境変数として作成しています。

SMS 受信のクラウド フロー

Twilio からの Webhook で SMS を受信

[HTTP 要求の受信時] をトリガーにします。"HTTP POST の URL" は、Twilio の Console で Incoming Message の "Send a webhook" の "Request URL" で利用します。

l_147288799_4_6e84b4bf4e19593d724e841ac02b3791.png

"JSON スキーマ" は以下です。

{
    "type": "object",
    "properties": {
        "$content-type": {
            "type": "string"
        },
        "$content": {
            "type": "string"
        },
        "$formdata": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "key": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    }
                },
                "required": [
                    "key",
                    "value"
                ]
            }
        }
    }
}

受信メッセージから差出人と本文を取り出す

受信メッセージの差出人と本文を格納するため、[変数を初期化する] アクションを使います。

image.png

受信メッセージの差出人と本文を取り出します。

image.png

スイッチで Key が "Body" と "From" の Value をそれぞれ変数に格納しています。

l_147288799_7_371d4a07a967e0957e5cfd79d1a716f3.png

LINE WORKS のボタン テンプレート でメッセージを転送する

[HTTP] アクションで LINE WORKS の Bot API のリクエストを行います。
ボタン テンプレート形式のメッセージで、返信動作のためのボタンを表示します。

l_147288799_8_3974e18c53adc89f6aa2562bc697cb0a.png

ボタン テンプレートの送信例。

l_147288799_18_4fd6ac53ce20ba262749e198e50515e5.png

SMS 送信のクラウド フロー

LINE WORKS トークルームの Bot 宛てメッセージを受信

[HTTP 要求の受信時] をトリガーにします。"HTTP POST の URL" は、LINE WORKS の Developer Console で Bot の Callback URL として利用します。

l_147288799_9_502fa0ec7abf8bb8f9b757ae283227ed.png

"JSON スキーマ" は以下です。

{
    "type": "object",
    "properties": {
        "type": {
            "type": "string"
        },
        "source": {
            "type": "object",
            "properties": {
                "userId": {
                    "type": "string"
                },
                "channelId": {
                    "type": "string"
                },
                "domainId": {
                    "type": "integer"
                }
            }
        },
        "issuedTime": {
            "type": "string"
        },
        "content": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "text": {
                    "type": "string"
                },
                "postback": {
                    "type": "string"
                }
            }
        }
    }
}

受信メッセージが postback のデータを含むかの条件で分岐

SMS 転送時のボタン テンプレートのボタンをクリックした場合は postback が送られます。テキストが入力されたときには含まれません。[条件] のアクションで分岐します。

l_147288799_10_b453d3a548c7cdb1dc36c699e215945e.png

[はいの場合] 返信ボタンのクリックだった場合は、メッセージ入力を促す

[HTTP] アクションで LINE WORKS の Bot API のリクエストを行います。
テキスト形式のメッセージで、返信メッセージ入力を促します。

l_147288799_11_b96495a8b5e245ec70a2c8a4befd5407.png

Excel のテーブルに返信メッセージ待ちの行を追加。

l_147288799_12_ebeb6afc4d2c4ee1efd077dfd0e1d614.png

[いいえの場合] 返信メッセージの入力だった場合は SMS を返信

Excel のテーブルの行の取得で、メッセージ待ちの行を取得。

l_147288799_13_6f05f708c248da3415232d5a6a4fe8e6.png

Twilio の "携帯ショートメール(SMS)送信" のアクションで SMS 送信。

l_147288799_14_be792220ccb756b763d53d12f4b29388.png

SMS 送信が行われたら、テーブルの行を削除。

l_147288799_15_38fb3a1b2f60db460674d63b3ba8e209.png

Twilio

Twilio の SMS 機能を利用します。コンソールから Messaging Service の設定をします。

Messaging Service の Sender pool で該当の Sender を開き、A MESSAGE COMES IN の Webhook に Power Automate の "HTTP 要求の受信" で生成された URL を指定します。

l_147288799_17_71fef1ba470d75ccd90511b4fdcb290a.png

LINE WORKS の Bot の設定

Developer Console で Bot を登録します。

l_147288799_2_1a6b35eb43681232beaae9b7a5931842.png

Callback URL には、Power Automate の "HTTP 要求の受信" で生成された URL を指定します。

設定は以上です。

動作確認

SMS を Twilio の電話番号宛てに送信すると、LINE WORKS の Bot からメッセージが配信されます。返信ボタンのクリックで、送信者に返信できます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?