Micosoft FLOW は Excel ファイル内のデータを扱うことができます。
この記事では、LINE WORKS の トーク Bot API と Microsoft FLOW を組み合わせて、LINE のトーク メッセージで Excel のデータ問い合わせを行ってみます。
分かりやすくするため、商品の在庫数量の問い合わせを LINE WORKS Bot で行うといったシナリオを想定します。
LINE WORKS で商品名を Bot に話しかけると、Excel の在庫データを参照し、在庫数量を返事してくれます。

Azure Automation
以下の記事で、Microsoft Flow で何かしらのトリガーを基に、定型のメッセージを送る LINE WORKS BOT の作成方法を説明しました。
TITLE: LINE WORKS + Azure Automation + Microsoft Flow で LINE WORKS Bot からトークメッセージ送信
URL: https://qiita.com/iwaohig/items/3056b95597772061d17b
上述の記事の説明に沿って、Azure Automation の設定を行ってください。
ただし、PowerShell のスクリプトは、ユーザー ID とメッセージの内容をパラメータで受け取るために、以下のものを利用してください。
Bot No. 、API 認証関連の値は、後ほど LINE WORKS の Developer Console を参照してく入力しなおしてください。Bot No. は Bot 登録時に生成されます。
Param
(
[Parameter (Mandatory= $true)]
[string] $accountId,
[Parameter (Mandatory= $true)]
[string] $message
)
$header = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$header.Add("Content-Type","application/json; charset=UTF-8")
$header.Add("consumerKey","<Server API Consumer Key>")
$header.Add("Authorization","Bearer <Server Token>")
$header.Add("Cache-Control","no-cache")
$json = @"
{
"botNo": <bot No.>,
"accountId": "$accountId",
"content": {
"type": "text",
"text": "$message"
}
}
"@
$Body = [System.Text.Encoding]::UTF8.GetBytes($json)
$Uri = "https://apis.worksmobile.com/<API ID>/message/sendMessage/v2"
Invoke-RestMethod -Uri $Uri -Method Post -Header $header -Body $Body
Azure Automation の Runbook でのパラメータの利用は、こちらの記事で説明されています。
TITLE: Runbook の入力パラメーター
URL: https://docs.microsoft.com/ja-jp/azure/automation/runbook-input-parameters
Excel
取り扱うデータをテーブルに含めた Excel ファイルを OneDrive for Business または OneDrive に保存します。
ここでは、以下のような形式のファイルを用いました。
Microsoft Flow の準備
HTTP 要求の受信時をトリガーとして作成
LINE WORKS ユーザーからの問い合わせを受けるために、Microsoft Flow でフローのトリガーとして [HTTP 要求の受信時] を指定します。
[要求本文の JSON スキーマ] を [サンプルのペイロードを使用してスキーマを生成する] を利用して作成します。
サンプルの JSON ペイロードは LINE WORKS の Developers サイトの "メッセージ受信 - Callback 形式 (message)" の記事中の Request Example として掲載された以下を用います。
{
"type": "message",
"source": {
"accountId": "admin@example.com",
"roomId": "12345"
},
"createdTime": 1470902041851,
"content": {
"type": "text",
"text": "hello"
}
}
FLOW がサンプル ペイロードを解析してスキーマを生成してくれます。
[method] は "POST" を指定します。
Excel Online をアクションとして作成
場所、ドキュメント ライブラリ、ファイル、テーブル、キー列、キー値を指定します。
この設定により、ユーザーが LINE WORKS のトークで話した商品名をキーに、該当商品データの行を取得します。
Azure Automaiton をアクションとして追加
ここでは、[ジョブの作成] を選択します。
サブスクリプション、リソース グループ、Automation アカウント、Automation のハイブリッド worker グループ、Runbbok 名、ジョブの待機、パラメータを指定します。Runbook Parameter でトークメッセージに含める情報を、"動的なコンテンツの追加" で選択できます。
フローを保存します。
[HTTP 要求の受信時] の HTTP POSR の URL が生成されるので、控えておきます。
LINE WORKS Developer Console の準備
LINE WORKS でトークボット API を利用するため、LINE WORKS の Developer Console で、以下の作業を行います。
API 認証の準備
- API ID 発行
- サーバー API のコンシューマーキー発行
- サーバー API の Server Token
手順はこちらのページの情報を参照します。
https://developers.worksmobile.com/jp/document/1002002?lang=ja
Bot 登録
Bot メニューで [登録] ボタンをクリックし、以下の項目を入力し、保存をクリック
- Bot名 -> 任意の名前
- 「説明」-> 任意の説明文
- Callback URL -> Microsoft Flow の Http 受信時の要求で生成された URL
- 複数人のトークルームに招待可 -> off
- 管理者 -> 任意のメンバーを指定
登録すると Bot No. が生成されます。
API 認証の情報と、Bot No. を Runbook のスクリプトに記述します。
LINE WORKS 管理画面での作業
LINE WORKS の管理画面の [サービス]-[Bot] メニューで当該 Bot を追加します。
追加後、Bot の詳細で、Bot の使用権限や公開設定を用途に応じて行います。
動作確認
LINE WORKS で Bot に商品名を送ると、Bot から在庫数量などの情報が返信されることを確認します。