見出し画像

Azure OpenAI x Pinecone x TeamsでFAQ検索ボットを作成する~Logic App作成編

この記事について

この記事ではLogic Appを利用してTeamsの特定のチャネルにメンションされた投稿を取得して、App Serviceへjsonで投げて、処理された本文を返信で投稿するところまでを解説しています。ところどころソースは載せていますが、常に最新とはいかないので、参考までにしてください。

手順

1.Logic Appを作成する

ロジックアプリ名などは後々使わないので、適当にしました。地域は「Japan East」プランの種類は「消費」、ゾーン冗長は「無効」です。一旦、プランを消費にするとその他のオプションは消えてしまうので、このまま作成しました。

2.トリガーを作成する

ロジックアプリデザイナーを開きます。
今回作るものは

今回作るものはこのぐらいの長さです。
「チャネルに新しいメッセージが追加されたとき」トリガーを使います。
TeamsIDとChannelIDが必要です。取得の仕方ですが、下図のようにチャネルへのリンクを取得でURLを取得します。取得したリンクの
groupId=nd73s43ff-fsw3-5age-519a-a2d3fe1h7gax
このグループIDの値が「チーム」に入れる値です。
チャネルに入れる値も同様にurlの前のほう、
19%3a4rfvd5tgbc6nhr31jt3271sr6756s37e%40thread.skype
というのが該当します。注意としては%3aは「:」(コロン)、%40が「@」(@マーク)になりますので上記の例だと、

19:a4rfvd5tgbc6nhr31jt3271sr6756s37e@thread.skype

こうなります。今のところ、19で始まるものしかないので、そこを狙い撃ちしていますが、仕様を調べてないので、違うケースが出てきたら、申し訳ございません。

3.JSON解析を追加します。ひとまず、該当のトリガーを動かし、チャネルに新しい書き込みをするとteamの投稿を取得します。デザイナーに戻らずに作成したトリガーをクリックすると、出力として、jsonが取れます。それをコピーして、デザイナーに戻り、JSONの解析の「サンプルのペイロードを使用して、スキーマを生成する」にペーストします。これでjsonの解析ができるようになります。
mentionされているかどうかを確認したり、などのロジックを追加していきいます。ここで注意があって、返信しようとする投稿のIDが後から必要になります。私が勝手に調べた限りでは「etag」というjson値のようです。ですので、etagを変数に保存しております。

3.httpアクションでjsonを投げる

httpで自分で作成したWeb Serviceを呼び出します。jsonで投げて、帰ってくるのはhtmlなので、そのまま回答として変数に保存しています。

4.元の投稿に返信します。

投稿者は「Flow bot」で、投稿先が「Channel」なのですが、選んでもMessageIDなどのオプションが出ないことがあるので、その場合は「Channel」と直接入力してみてください。
MessageIDは私は前出のetagを入れております。TeamとChannelもトリガーで利用した値を入れておきます。
Messageへはすでにhtmlになっている3のhttpの応答をそのまま設定しました。

相互リンク

概要編

Pineconeアップロード編

postgresqlアップロード編

pineconeにqueryを投げる+LLMで回答を作成する編


いいなと思ったら応援しよう!