Logic Apps から Slack に通知する

以前に Bot Framework で Slack の bot を構成するを書きましたが、
今回はこの素因数分解の bot を Logic Apps で作成してみます。
自然数をランダムに生成して素因数分解してその結果を Slack に通知する、
というのを 10 分間隔で実行することにします。

まず、Azure ポータルで Logic App を作成します (手順は初めてのロジック アプリの作成を参照)。
名前は、グローバルに一意である必要はありません。

次に、デザイナーでロジックを追加していきます。
完成したワークフローを先に示します。

 

以下は、各アクションについての説明や注意点です。

(1) 繰り返し (Recurrence)
最初のトリガーとして [繰り返し] を選択し、10 分間隔で実行されるようにしています。

(2) Azure Functions
アクションとして [Azure Functions] を選択すると、同じアカウント内で作成済みの関数を選択できます。
([HTTP] というアクションで URL を指定する方法もあります。)

Logic-Apps-Functions

ここでは、前回の Azure Functions で Web API を作成するで用意した Azure Functions の 2 つの関数を利用します。

(3) データ操作 – JSON の解析
前の関数からは

{ "result": "5439 = 3 ・ 7^2 ・ 37" }

という形式の JSON が返るため、あとで必要になる文字列 (result プロパティの値) を取り出すためにこれを解析します。
[スキーマ] は、この JSON を入力すれば作成されます。

(4) Slack – 投稿メッセージ
投稿先のチャネルとメッセージを指定します。
初回の設定時にはアカウントを認証する必要があります。Logic Apps 上の画面で失敗する場合は、[API 接続] から設定できます。

Logic-Apps-Slack

 

以上で完成です。
下図は Slack のスクリーン ショットです。

Factorization-Slack

 

前回: Azure Functions で Web API を作成する

参照
Flow、Logic Apps、Functions、WebJobs の比較
Logic Apps とは
Azure Functions を使用したロジック アプリのカスタム コードの追加と実行

Bot Framework で Slack の bot を構成する

Bot Framework で Slack の bot を構成する

Microsoft Bot Framework を利用した bot API を公開して、Slack をクライアントとして使えるように構成してみました。
その構築手順と注意点の簡単なメモを残しておきます。

基本的には、次の 2 つの記事をもとにしています。

(1) 環境設定

(2) bot を Web API として開発

  • テンプレートからプロジェクトを作成する
  • プロジェクトのプロパティで [アセンブリ名] を変更する
  • NuGet で Bot Framework を更新する

(3) Azure App Service に配置

  • Visual Studio から発行する

(4) Bot Framework サイトに登録

  • Web.config の appSettings にアカウント情報を設定するには、Azure Portal の [アプリケーション設定] を利用する
  • Web Chat を構成する
    • HTML に Web Chat を埋め込む
  • Slack bot を構成する
    • Slack の設定を追加するときに表示される手順の通りに進める

 

以下は注意点です。

(1) 開発環境における実行について

ローカルの開発環境においては、
Visual Studio で開始した bot API に Bot Framework Channel Emulator から接続することになりますが、
[デバッグなしで開始 (Ctrl+F5)] では 401 エラーとなります。
[デバッグの開始 (F5)] で実行すれば接続できます。

これは、Controller に BotAuthentication 属性が付けられていることによって、
デバッガーにアタッチされているときは認証不要になるためです。
したがって、開発環境では [デバッグの開始 (F5)] で実行しましょう。

(2) クライアント上でのテキストの表示について

テキストは既定で Markdown 形式です。したがって、記号などを使用するときは注意が必要です。
なお、reply.TextFormat を plain に設定しても、Web Chat では無効のようです。
また、reply.TextFormat を plain に設定しても、Slack ではなぜか * が _ と表示されます。

(3) Activity.Type について

Slack からは、activity.Type が ActivityTypes.Message でない要求が送られてくることがあります。
activity.Type の値により処理を分岐させないと、応答メッセージが重複して表示されてしまいます。

(4) URL の送信について

Slack から URL を送信すると、bot 側で受信するテキストでは、URL が < と > で括られます。

 

素因数分解 bot API のコードを示します。
全体のソースコードは、FactorizationBotApi (GitHub) にあります。

 

Slack で実行したときのスクリーン ショットです。

Factorization bot

 

表情分析 bot については、Bot Framework で Slack bot 構築メモ (Qiita)に書きました。

作成したサンプル
BotSample (GitHub)

バージョン情報
.NET Framework 4.6
Microsoft.Bot.Builder 3.3.0

参照
人工知能パーツ Microsoft Cognitive Services を使った表情分析アプリを作ろう! (Emotion API × Bot Framework 編)
Azure で Web 公開&お手軽 Web Chat を試す
Microsoft Cognitive Services & Bot Framework 概要
Bot Framework Overview

Bot Framework で Slack bot 構築メモ

カテゴリー: クラウド. タグ: , . 2 Comments »