社員のお弁当の注文を取りまとめて、FAX 送信する LINE WORKS ボット #3


以下の URL の記事の続きです。
https://qiita.com/iwaohig/items/d66a0c2c1663122f9f84
https://qiita.com/iwaohig/items/ac0f13eb657ea312109c

注文書を作成して、お弁当屋さんに FAX 送信します。

注文書 Excel ファイル生成

Microsoft Flow で [スケジュール] をトリガーに指定します。

スクリーンショットのように発注する日時を指定します。ここでは平日の 18 時に発注処理を行う想定です。

注文受付用の Excel の集計テーブルの値を取得します。

注文書フォーマットの Excel ファイルを別途、OneDrive for Business 上に作成しています。書式は任意のもので良いです。送付先のお弁当屋さんの指定があれば、それに合わせたものを作りましょう。

注文書上の数量の記載箇所に、先ほど取得した発注数量を反映します。

Twilio で Fax 送信

発注先のお弁当屋さんの注文方法が電話か FAX というのはありがちかと思います。
ここでは Twilio の API で FAX 送信します。

こちらの記事も参照してください。

TITLE: Dropbox にPDF ファイルがアップロードされたら Twilio で FAX 送信
URL: https://qiita.com/iwaohig/items/b46834d60015249e9358

Twilio の API で FAX 送信できるファイルは PDF です。また、URL でアクセスできる場所に置く必要があります。

OneDrive for Business 上の Excel ファイルを直接送ることができません。
このため、Excel ファイルを PDF に変換し、Web サーバーに FTP 転送した後に Twilio の API を実行します。ちょっと、まどろっこしいですね。。

手順は以下のとおりです。


PDF に変換を行い

変換したファイルを格納

Web サーバーに FTP 転送

Twilio API 用 AzureAutomation を実行

AzureAutomation の Runbook は次のように記述しています。
PowerShell の Invoke-RestMethod コマンドレットで Twilio の API を実行します。

Param
(
  [Parameter (Mandatory= $true)]
  [string] $filename
)

$USER = <Twilio の アカウントSID>
$PASS = <Twilio の AUTHTOKEN>
$secpasswd = ConvertTo-SecureString $PASS -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($USER, $secpasswd)

Invoke-RestMethod -Uri "https://fax.twilio.com/v1/Faxes/" -Credential $cred -Method POST -Body @{To=<宛先番号>; From=<Twilio で取得した番号>; MediaUrl="http://example.com/$filename"}

注文のとりまとめと発注完了

  • お弁当屋さんの Tweet をトリガーに、社員にメニュー通知
  • 社員は Bot への応答で注文
  • スケジュールに基づき注文集計
  • 注文書の FAX 送付

の仕組みができました。
必要に応じて、発注完了の通知を発注者や担当者に送ってもいいと思います。