Star Wars 検索チャットボットを作る
はじめに
Power Automate に Star Wars コネクタ が追加されたので、Power Virtual Agetns と Power Automate で、検索チャットボットを実装しました。
注意
今回利用する、Star Wars コネクタはプレミアムコネクタです。
有償プランもしくは、開発者向けプランををご利用ください。
Star Wars コネクタについて
このコネクタが利用するAPIは、「SWAPI-The Star Wars API」にて公開されています
検索可能なリソースは以下です。
- People
- Films
- Starships
- Vehicles
- Species
- Planets
これらについて、ID検索または、キーワード検索が可能となっています。
お遊び機能として、レスポンスがウーキー語(Wookiee:劇中に登場するチューバッカの種族の言語)になるパラメータがあり、作者様のスターウォーズに対する愛を感じます。
下記は、オリジナル・トリロジーの主役「ルーク・スカイウォーカー」のウーキー語による検索結果。
URLまで変換されていて面白いですね!
{
"whrascwo": "Lhuorwo Sorroohraanorworc",
"acwoahrracao": "172",
"scracc": "77",
"acraahrc_oaooanoorc": "rhanoowhwa",
"corahwh_oaooanoorc": "wwraahrc",
"worowo_oaooanoorc": "rhanhuwo",
"rhahrcaoac_roworarc": "19BBY",
"rrwowhwaworc": "scraanwo",
"acooscwoohoorcanwa": "acaoaoakc://cohraakah.wawoho/raakah/akanrawhwoaoc/1/",
"wwahanscc": [
"acaoaoakc://cohraakah.wawoho/raakah/wwahanscc/1/",
"acaoaoakc://cohraakah.wawoho/raakah/wwahanscc/2/",
"acaoaoakc://cohraakah.wawoho/raakah/wwahanscc/3/",
"acaoaoakc://cohraakah.wawoho/raakah/wwahanscc/6/"
],
"cakwooaahwoc": [],
"howoacahoaanwoc": [
"acaoaoakc://cohraakah.wawoho/raakah/howoacahoaanwoc/14/",
"acaoaoakc://cohraakah.wawoho/raakah/howoacahoaanwoc/30/"
],
"caorarccacahakc": [
"acaoaoakc://cohraakah.wawoho/raakah/caorarccacahakc/12/",
"acaoaoakc://cohraakah.wawoho/raakah/caorarccacahakc/22/"
],
"oarcworaaowowa": "2014-12-09T13:50:51.644000Z",
"wowaahaowowa": "2014-12-20T21:17:56.891000Z",
"hurcan": "acaoaoakc://cohraakah.wawoho/raakah/akwoooakanwo/1/"
}
Power Automate におけるコネクタでは、以下のアクションが用意されています。
各リソースについて、キーワード検索、および内部IDによる検索が可能となっています。
APIには存在するVehicles(車両)が、コネクタには用意されていないのが残念です。
[Get all Films]など、あたかも全情報を返しそうなアクション名となっていますが、キーワードによる検索も可能です。
検索ワードをブランクにすることで、全情報の取得が可能です。
また検索結果は10件ごとのページによるレスポンスとなります。ページ番号が指定可能です。
「Star Wars 情報検索チャットボット」 作成
このコネクタを利用した、スターウォーズ用語検索チャットボットを 「さくっと」 作成します。
トピックの構成
上記のリソース毎にトピックを作成していきます。
一つのトピック作成し、完成後に複製していくと作業が楽です。
トピックの作成
Peopleリソース検索用のトピックの作成例になります。
- 検索するキーワードを質問します
- Power Automate を呼び出し、Star Wars コネクタ によるキーワード検索を行います
- 結果(最大10件)をメッセージで出力します
キーワード検索フローの作成
検索されるリソースにより呼び出し元のトピックは複数存在しますが、各トピックから呼び出すフローは1本でまとめています。
チャットボットの応答のため、レスポンスを重視し、Applay to eachによるループ処理を排除したフローとなっています。
変数を10個用意し、検索結果に10ずつ入力しています。
トリガーのパラメータには、リソース名と検索ワードを設定します。
リソース名は、"People"、"Films"、"Starships"・・・ などになります。
return用の変数を初期化します。
アクションのコピーを利用すると作業が楽です。
トリガーパラメータのリソースにより、StarWarsコネクタで呼び出すアクションが異なる為、条件分岐させます。
リソースに対応するアクションを呼び出します。Serch Stringにトリガーパラメータの検索ワードを設定します。
上記で初期化した10の変数には、以下の関数をセットします。
replace(replace(replace(string(outputs('Get_People')?['body/results']?[0]),',',decodeUriComponent('%0A%0A')),'{',''),'}','')
作業簡略化のために、APIからのレスポンスであるJSONをそのまま改行させて表示させています。
これでも、わりと見やすいと思います。
outputs('Get_People')?['body/results']?[0]
の末尾の添え字部分は、それぞれセットする変数ごとにカウントアップしてください。
他のリソースも、アクションのコピーを活用しながら複製していきます。
トピックへのReturnには、10の変数をそれぞれ設定します。
トピックに戻り、作成したフローを呼び出します。
一つ目のパラメータには、リソース名("People"、"Films"、"Starships"・・・ など)を入力してください。
動作
Peopleを"-"で検索すると、C-3POやR2-D2など、劇中に登場するドロイド達やオビワンなどが検索されました。
まとめ
Power Automate に追加されたStarWarsコネクタ、ファンにはたまらないサプライズですね!
Author And Source
この問題について(Star Wars 検索チャットボットを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/MiyakeMito/items/b663a0748d7802d43f32著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .