2
Help us understand the problem. What are the problem?

posted at

updated at

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 におけるコネクタでは、以下のアクションが用意されています。

image.png
image.png

各リソースについて、キーワード検索、および内部IDによる検索が可能となっています。
APIには存在するVehicles(車両)が、コネクタには用意されていないのが残念です。

[Get all Films]など、あたかも全情報を返しそうなアクション名となっていますが、キーワードによる検索も可能です。
検索ワードをブランクにすることで、全情報の取得が可能です。
また検索結果は10件ごとのページによるレスポンスとなります。ページ番号が指定可能です。

image.png

「Star Wars 情報検索チャットボット」 作成

このコネクタを利用した、スターウォーズ用語検索チャットボットを 「さくっと」 作成します。

トピックの構成

上記のリソース毎にトピックを作成していきます。
一つのトピック作成し、完成後に複製していくと作業が楽です。

image.png

トピックの作成

Peopleリソース検索用のトピックの作成例になります。

  1. 検索するキーワードを質問します
  2. Power Automate を呼び出し、Star Wars コネクタ によるキーワード検索を行います
  3. 結果(最大10件)をメッセージで出力します

image.png

キーワード検索フローの作成

検索されるリソースにより呼び出し元のトピックは複数存在しますが、各トピックから呼び出すフローは1本でまとめています。

チャットボットの応答のため、レスポンスを重視し、Applay to eachによるループ処理を排除したフローとなっています。
変数を10個用意し、検索結果に10ずつ入力しています。

image.png

image.png

image.png

image.png

トリガーのパラメータには、リソース名と検索ワードを設定します。
リソース名は、"People"、"Films"、"Starships"・・・ などになります。

image.png

return用の変数を初期化します。
アクションのコピーを利用すると作業が楽です。

image.png

トリガーパラメータのリソースにより、StarWarsコネクタで呼び出すアクションが異なる為、条件分岐させます。

image.png

リソースに対応するアクションを呼び出します。Serch Stringにトリガーパラメータの検索ワードを設定します。

image.png

上記で初期化した10の変数には、以下の関数をセットします。

replace(replace(replace(string(outputs('Get_People')?['body/results']?[0]),',',decodeUriComponent('%0A%0A')),'{',''),'}','')

作業簡略化のために、APIからのレスポンスであるJSONをそのまま改行させて表示させています。
これでも、わりと見やすいと思います。

outputs('Get_People')?['body/results']?[0]
の末尾の添え字部分は、それぞれセットする変数ごとにカウントアップしてください。

他のリソースも、アクションのコピーを活用しながら複製していきます。

image.png

トピックへのReturnには、10の変数をそれぞれ設定します。

トピックに戻り、作成したフローを呼び出します。
一つ目のパラメータには、リソース名("People"、"Films"、"Starships"・・・ など)を入力してください。

image.png

動作

Peopleを"-"で検索すると、C-3POやR2-D2など、劇中に登場するドロイド達やオビワンなどが検索されました。

image.png

image.png

まとめ

Power Automate に追加されたStarWarsコネクタ、ファンにはたまらないサプライズですね!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?