3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Excel の在庫表問合せ Bot を LINE WORKS + Microsoft Flow で作成

Last updated at Posted at 2019-05-18

Micosoft FLOW は Excel ファイル内のデータを扱うことができます。

この記事では、LINE WORKS の トーク Bot API と Microsoft FLOW を組み合わせて、LINE のトーク メッセージで Excel のデータ問い合わせを行ってみます。

分かりやすくするため、商品の在庫数量の問い合わせを LINE WORKS Bot で行うといったシナリオを想定します。

LINE WORKS で商品名を Bot に話しかけると、Excel の在庫データを参照し、在庫数量を返事してくれます。

image.png

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 に保存します。

ここでは、以下のような形式のファイルを用いました。

image.png

Microsoft Flow の準備

HTTP 要求の受信時をトリガーとして作成

LINE WORKS ユーザーからの問い合わせを受けるために、Microsoft Flow でフローのトリガーとして [HTTP 要求の受信時] を指定します。

[要求本文の JSON スキーマ] を [サンプルのペイロードを使用してスキーマを生成する] を利用して作成します。

image.png

サンプルの 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 がサンプル ペイロードを解析してスキーマを生成してくれます。

image.png

[method] は "POST" を指定します。

Excel Online をアクションとして作成

ここでは、[行の取得] をアクションとして指定します。
image.png

場所、ドキュメント ライブラリ、ファイル、テーブル、キー列、キー値を指定します。
image.png

この設定により、ユーザーが LINE WORKS のトークで話した商品名をキーに、該当商品データの行を取得します。

Azure Automaiton をアクションとして追加

image.png

ここでは、[ジョブの作成] を選択します。

サブスクリプション、リソース グループ、Automation アカウント、Automation のハイブリッド worker グループ、Runbbok 名、ジョブの待機、パラメータを指定します。Runbook Parameter でトークメッセージに含める情報を、"動的なコンテンツの追加" で選択できます。
image.png

フローを保存します。

[HTTP 要求の受信時] の HTTP POSR の URL が生成されるので、控えておきます。
image.png

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
  • 管理者 -> 任意のメンバーを指定

image.png

登録すると Bot No. が生成されます。

API 認証の情報と、Bot No. を Runbook のスクリプトに記述します。

LINE WORKS 管理画面での作業

LINE WORKS の管理画面の [サービス]-[Bot] メニューで当該 Bot を追加します。

image.png

追加後、Bot の詳細で、Bot の使用権限や公開設定を用途に応じて行います。

image.png

動作確認

LINE WORKS で Bot に商品名を送ると、Bot から在庫数量などの情報が返信されることを確認します。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?