0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIスピーカーのプログラミング2025.08(4. Web APIによる他のアプリケーションとの連携)

Last updated at Posted at 2025-07-07

4.1 はじめに

 AlexaやVoiceflowは便利なツールですが、それ自身には表計算やメールの機能はありません。しかし他のそうした機能を有するツールとデータ交換をすることができます。その役割を担うのがAPI(Application Programming Interface)です。APIを用いるとVoiceflowから表計算ツールを操作したり、逆にpythonでVoiceflowのProjectを呼び出したりといった使い方ができます。本章では、最初にAPIについて簡単に説明し、次にAlexaやVoiceflowにおけるAPI操作について解説します。

4.2 APIとは

 APIとはApplication Programming Interfaceの略でソフトウェア同士が互いに情報をやりとりするのに使用するインタフェースの仕様です。いろいろな仕様があり、たとえばOSとアプリとの間のインタフェースもAPIの一つとなります。
 APIの中で、HTTP/HTTPSプロトコルを用いる仕様がWeb APIと呼ばれるものです。Web APIは、速度は遅いが途中の処理経過がわかりやすく初心者にも扱いやすい利点があります。

 Web APIでは次の4段階で情報が処理されます。
1). クライアントからのリクエスト
2). サーバーによる処理
3). サーバーからのレスポンス
4). クライアントによるレスポンスの処理

 一般的な使用法としては、指定されたURLに必要な情報(アクセスキーや問い合わせ情報・設定情報など)を送ると、接続先から応答が戻ってくる形となります。日英翻訳サイトであれば、日本語テキストを送ると英文テキストが返ってくるイメージです。
 Web APIの中にも仕様が何種類かありますが、REST APIが扱いやすさから最近は広く使われています。REST APIでは[GET][POST][DELETE](それぞれ、データの取得、保存、削除)といったメソッドを利用してリクエストのできる利点があります。ここではREST APIを例にとって説明してゆきます。

 たとえば気象情報APIは気象庁が提供しており、指定URLに地域コード(以下の例では130000 (=東京) )を付加してリクエストすると、その地域の気象情報がJSON形式で次のように戻ってきます。地域コードは http://www.jma.go.jp/bosai/common/const/area.json で確認できます。また下記の例で呼び出しURLに特にメソッドの指定がありませんが[GET]が仮定されます。

[呼び出し]
https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json
[応答]
  {
   "publishingOffice": "気象庁",
   "reportDatetime": "2024-10-09T04:36:00+09:00",
   "targetArea": "東京都",
   "headlineText": "",
   "text": " 前線が日本の南から伊豆諸島を通って日本の東にのびています。\n\n 東京地方は、(中略) 船舶は高波に注意してください。"
  }

通常のWebブラウザでも、表示は崩れることがあるかもしれませんが、URLを入力すると上記の動作は確認できます。ただ各種パラメータを変化させて動作を確認するのであればWeb API用のテストツールを使用すると便利です。テストツールとしては以下のようなものがあります。Postmanが人気があるようです。
 Apidog:https://apidog.com/jp/
 Jmeter:http://apidog.com/jp/blog/what-is-jmeter-and-its-japanese-setting/
 Postman:http://apidog.com/jp/blog/what-is-postman-and-its-japanese-setting/
 Paw:https://paw.cloud/

Web APIはその方式からわかるように処理速度としては速いとはいえず、環境によってはタイムアウトとなることもあります。

4.3 AlexaスキルでのAPIの使用例

 気象情報APIを利用して ”text” 部分のデータを読み上げるAlexaスキルを作成してみます。インテントは設定せず、起動後直ちに気象情報APIにアクセスします。そして戻ってきたJSONデータのうち、”text”の部分を読み上げる流れとします。

 Alexaのバックエンドコードindex.jsでこのAPIを扱う要点は次の通りとなります。
(1) Web APIを使用するために必要に応じhttpまたはhttpsモジュールを読み込む
 const http = require('https');
(2) 非同期処理
・外部APIを使用することからhandleをasyncとする。
 async handle(handlerInput)….
・またその中で実際にAPIを呼び出しているCreateMessage関数の処理を待つため、awaitを指定する。
 let response = await CreateMessage(130000);
・さらにCreateMessage関数の戻り値の指定部分に非同期処理後の値を受けるPromiseを指定する。
 return new Promise((resolve, reject) => {…
(3)応答コードがエラーのときの処理
 接続先の応答がエラーのときの処理を記述する
if (response.statusCode < 200 || response.statusCode >= 300) {….

これらを踏まえてindex.jsのコードの主要部分を示すと次のようになります。
image.png
image.png
 編集が終わったらデプロイして、テストで動作確認します。
 なお地域コードが0からはじまる地域ではコードを文字列に変換しないとこのままでは正しく動作しません。さらに上記のコードでは読み上げ部分が長くなりすぎるので、地域の予報に限定した内容をピックアップするには上記の47~48行目を文字列操作により適宜編集するとよいでしょう。

4.4 VoiceflowでのAPIの使用例

 VoiceflowでWeb APIを使用するには、DevカテゴリからAPIブロックをドラッグしてデザイン画面に貼り付け、そのプロパティで必要な情報を指定します。
image.png
 プロパティで設定する内容は接続先により異なりますが、プロパティの最上段の欄で接続メソッド(【GET】情報取得/【POST】新規情報/【PUT】情報更新・置換/【DELETE】削除など)とそのURL(もしくはURLを格納した変数)を指定します。Headers, Parametersの欄も接続先の仕様にしたがった情報を入力します。Capture Responseは接続先からどのような情報を受け取り、どの変数に格納するかを指定するところですが、今は空欄とします。
 前節と同様に気象情報APIに接続するには情報取得を意味するGETの次の行にURL,
https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json
を指定します。HeadersやParametersの欄は入力不要です。
 戻り値のうち、どの情報をどの変数で受け取るか指定する必要がありますが、この段階でもJSON形式で戻り値すべてを確認できます。プロパティpaneの下部にある Sendを押すと、このAPIブロックが単独で実行され、戻ってくるデータの一覧を下の右図のように画面で確認できます。これより、必要なデータは戻り値の中のkey ”text”にあることがわかります。
image.png

 なお、戻り値の確認で左下に図のように200 OKと表示されていれば通信成功、それ以外(例えば404 Not Found)と表示されていれば何らかのエラーが生じています。
 さて、keyの”text”に必要な情報があるのがわかりました。そこでプロパティのCapture Responseの部分をObject:text→variable: mytextと設定します。戻り値を格納する変数(この場合mytext)はあらかじめ用意しておきます。複数のkeyの内容を受けたければ、Add anotherをクリックするかCapture Responseの+をクリックしてObjectと変数を追加します。
この設定により、このブロックが実行された際に、Web APIが実行され、その結果がmytextに格納されるので、APIブロックに接続されたブロックで読み上げなどの処理を行います。
image.png
このAPIブロックを含む簡単なVoiceflowのProjectと実行例を示します。気象情報APIに接続し、その結果をMessageブロックで読み上げています。
image.png

他の公開Web APIの例として標準時取得と郵便番号検索をあげておきます。

・標準時の取得 メソッド:GET

https://www.timeapi.io/api/Time/current/zone?timeZone=*****/*****
****** には地域と都市名が入る(例:Asia/Tokyo)
戻り値の例:(*****/*****はAsia/Tokyoを指定)
{
  "year":2025,
  "month":6,
  "day":17,
  "hour":13,
  "minute":49,
  "seconds":28,
  "milliSeconds":721,
  "dateTime":"2025-06-17T13:49:28.7213119",
  "date":"06/17/2025",
  "time":"13:49",
  "timeZone":"Asia/Tokyo",
  "dayOfWeek":"Tuesday",
  "dstActive":false
}

・郵便番号検索(zipcloud;日本郵便のデータを再配信) メソッド:GET

https://zipcloud.ibsnet.co.jp/api/search?zipcode=*******
****** には7桁の郵便番号が入る。
戻り値の例:(*******として1850023を指定)
{
  "message":null,
  "results":[
    {
      "address1":"東京都",
      "address2":"国分寺市",
      "address3":"西元町",
      "kana1":"トウキョウト",
      "kana2":"コクブンジシ",
      "kana3":"ニシモトマチ",
      "prefcode":"13",
      "zipcode":"1850023"
    }
  ],
  "status":200
}

*この例のように、戻り値が階層構造となっている場合にはプロパティのcapture and responseで指定するkey名は「reults..address2」のように「.」で階層を表します。

 各種機器のスイッチを物理的あるいは赤外線でON/OFFできるネットワーク機器としてSwitchBotシリーズがあります。この機器はユーザがアプリケーションに登録し、開発者オプションとして特殊な方法でトークンを取得するとAPIによる制御ができます。関心のある人は以下のURLを参照:
https://qiita.com/itouuuuuuuuu/items/874cd992f473f30de45b
https://kun432.hatenablog.com/entry/control-on-air-light-by-alexa-and-smart-plug

なお、APIを利用したデータベースの構築・管理の方法については後述します。

4.5 他のアプリケーションからのVoiceflow Projectの呼び出し

 Web APIを利用し、他のアプリからPythonやJavascriptでVoiceflowのProjectを呼び出すこともできます。
 そのためにはVoiceflowにおいてPublish操作を行い、さらにそれにアクセスするためのAPIキーを取得しなければいけません。
 例題として単純にメッセージを読み上げるだけの次のProjectを取り上げます。
image.png
Publish操作はデザイン画面の右上のPublishボタンをクリックします。ポップアップウィンドウでVersionの入力が求められます(値は任意、デフォルトはV1,V2,…)。Publishが完了したら、ウィンドウ左の Settingボタン→API keysでAPIキーを表示させます。
image.png

 APIキーは伏せ字で表示されますが可視化ボタンを押せば確認できます。伏せ字のままでもCopyボタンでCopy可能なので、Copyしてテキストエディタなどにいったん保存しておきます。このキーを利用してProjectを他のアプリから呼び出すことができます。
 他のアプリからの呼び出し確認例として、オンラインWeb APIテストツールREQBIN:https://reqbin.com/ を使用します(APIテストツールとして何を使用しても構いません)。ここでは動作確認だけの目的なので簡便なオンラインツールを使用しますが、機密性の高いデータはPostmanなどのオフラインツールを使用することをおすすめします。
 APIテストツールを起動すると接続先のURLとHeader情報を求められるので図のようにURL欄にPOSTを設定してVoiceflowのアドレスを、Headers欄にAPIキーを指定します(Headers欄ではなくAuth→Customでキーを指定しても良い)。
image.png

そしてSendをクリックすれば、Projectが実行され、その戻り値がJSON形式で上記ウィンドウの下に表示されます。この例ではJSON形式の0.payload.messageにProjectのメッセージ出力データを確認できます。
image.png

なお、この例はメッセージを読み上げるだけなのでこれで処理が終了しますが、入力を伴う場合には少し複雑となります。例として次のようなVoiceflow Projectを取り上げます。
image.png

この例ではCaptureによる入力待ちがあり、その入力後に「入力語句+ですね。」が出力される流れとなっています。このようなProjectをWebAPIテストツールで実行するといったん入力待ちのところまで実行されます。そして入力データをWebAPIテストツールにてJSON形式で下図のようにBody欄から供給しないと処理が終わりません。「うさぎ」を入力しSendを行った例を下に示します。

image.png

 API連携機能を使えばAlexa環境でVoiceflow Projectを呼び出すこともできます(ただし、Intentの処理などほかに考慮しなければいけない点もあります。詳細は以下の記事を参照:
https://qiita.com/msk98/items/aedf933cb27704c93958 )。

4.6 API連携によるデータベース操作(Airtable連携)

 API連携に対応したソフトウェアは多数あり、中にはそれらを有機的に結合させる自動化ソフト(ソフトAの結果でソフトBを起動し、さらにその結果でソフトCを動作させるなど)も存在します。Googleが提供する各種ソフト(mail, spread sheet, map etc.)はおおおむねWeb APIでアクセス可能であり、実際にそれを利用したホームページへのGoogle Map埋込などはよく見かけます。ただGoogleのAPIは各種設定がやや面倒なので、ここではAPI連携の初心者にわかりやすいデータベースソフトAirtableを例に、API連携によるデータ操作の例を示します。API連携に必要な設定値はそれぞれのソフトによって異なり、あらかじめ確認しておく必要があります。ただ基本的には、ここで取り上げるAirtableと同様の方法で連携できます。

4.6.1 Airtableとは
 Airtableは、2012年にAirtable社が開発したソフトで、表計算ソフトとデータベースの機能を併せ持つのが特徴です。クラウドベースのデータベース・整理ツールとして評価が高いですが、システム表示が日本語対応していないという難点があります(データとしての日本語は使用可能)。クラウドデータベースであるため、リアルタイムでのデータ共有・更新に適しています。

4.6.2 Airtableのアカウント取得
 Airtableを利用するには https://airtable.com/login に接続してアカウントを取得します(TopページからSign up for freeを選択する)。Googleのアカウントを取得済みであれば、Contomie with Googleを選択してもかまいません。もちろん、Airtable専用のアカウントを新規作成してもかまいません。

 なお無料で使用できる範囲ではデータ数やAPI接続回数に制限がありますが、練習として利用する場合にはほとんど問題ありません。
 認証が終わったら、AirtableのHome画面を開きます。初期画面では新規作成ツール(テンプレートなど)群のみが表示されます。Promotion pop upなどが表示された場合には適宜閉じておきます。
image.png

4.6.3 Airtableの編集データ準備
 Airtableではファイルに相当する作成データをbaseと呼びます。新規にAirtableでbaseを作成するにはHomeの下に並ぶツールを利用します。完全に新規作成であればStart from scratchを選択してデータ入力することとなります。
 ここでは汎用性を考慮して、あらかじめMicrosoft Excelで図のようなデータを作成し、それをAirtableに読み込むこととします。なお、PHONE列のデータは文字列データとして文頭の0を有効にしておきます。これをsample.xlsxとしていったん保存しておきます。
image.png
 AirtableのHome画面で "↑Quickly upload" をクリックしてImport dataウィンドウを開きます。このウィンドウを見ると多くのソフトからデータをインポートできることがわかります。ここでは先に作成したMicrosoft Excelのデータを読み込みます。Microsoft Excelのアイコンをクリックし、必要な操作を行ってデータを読み込みます。
 どこからインポートするかによって、必要な認証手続きに違いはありますがほぼ同様の操作でインポートできます。なお、AirtableのデータをMicrosoft Excelに戻したいときにはGrid view → Download CSVを利用します。
image.png

読み込みが実施される前に、読み込み後のイメージがFinish setting up your importウィンドウに表示されるので、よく確認しそれで問題がなければ右下のImportをクリックします。型の変更などはこの画面でもできますが、元データの修正が必要な場合にはCancelを押します。
 図の例で気がつくようにPHONEの列ではデータが読み込み時に数値(Number)として扱われているために、元データにあった最初の0が失われています。このようにソフト間でデータ型に完全な互換性があるわけではないので注意してください。この場合には #PHONEと書かれたセル列部分をクリックして、AirtableのSingle textやPhone numberタイプのデータとして読み込むよう指定すれば、この問題は回避できます(この例ではPhone numberと設定)。
image.png

 確認や必要な変更が終えたならウィンドウ右下のImportをクリックします。
 無事読み込まれると次図のようになります。AirtableではExcelでいうタブに相当する部分(図の「Sheet1」とある部分)をTableと呼びます。左上にはbase名(ファイル名に相当)が表示されます。
image.png
 base名の部分(sample.xlsx)をクリックするとbase名やその背景色、アイコンなどを変更できます。
image.png
 これだけでなくAirtableではデータベースソフトとしてデータの属性を指定したり、多彩な形で表現したりすることも可能ですが、ここではそれらの説明は割愛します。

4.6.4 AirtableのAPI接続認証システム
 Airtableはデータのセキュリティを確保するために、外部からのAPI接続の認証方法としてアクセストークン(Personal access token)を用いています。そのアクセストークンの取得方法について説明します。
 baseを作成後にトークン作成ページの https://airtable.com/create/tokens を開きます。

 新規にトークンを作成するにはCreate new tokenをクリックします。
image.png
 するとName(トークンにつける管理上の名称)、Scopes(アクセス権限の範囲)、Access(アクセス可能とするbase)の入力が求められます(ScopeとAccessは+Add…をクリックして指定)。図の例ではNameとしてMy first token、Scopesとして読み取り・書き込みの二種、Accessとしてsample.xlsxを設定しています。Scopesの選択肢には紛らわしいものがあるので下図の拡大部をよく確認すること。なお、すでに作成済みのトークンについてもトークン作成のトップページで当該トークンを選択したのち削除や各項目の編集ができます。
image.png

 設定後に、Create token(修整を行った場合にはSave changes)をクリックします。
 すると新規作成時には次のようなトークンの表示ウィンドウが現れます。トークンの内容は新規作成時にしか表示されないので、右側のコピーボタンでクリップボードにコピーしてテキストエディタなどにいったん保存します。コピー後はDoneボタンでウィンドウを閉じます。
image.png

4.6.5 AirtableのAPI接続
(1)全データの表示
 準備ができたので、VoiceflowのAPIブロックからAirtableへのAPI接続の試験をかねて全データを表示させてみます(各種APIテストツールを用いてもよい)。AirtableのAPI接続の具体的コードサンプルはbase画面の右下にあるAPI documentationから確認できます(見当たらない場合は左側のHelpアイコン「?」をクリックすると現れます)。なお、文字背景色はBaseの背景色に合わせたものとなるので緑とは限りません。
image.png
 API documentationをクリックすると、現在のbaseの名称やデータにあわせた形でAPI接続のサンプルが表示される、Airtable APIページが開きます。
 このページの右側にはcurl形式でのAPIアクセスサンプルが編集中のbaseデータに合わせた形で表示されています。
 表示はcurlとJavascript形式が選択できます。VoiceflowのAPIブロックで使用する際にはcurlで表示されるURLはそのまま使用でき、ヘッダオプション(-H)はHeadersの欄に転記すれば利用できます。

 例として全データをVoiceflowのAPIブロックで、JSON形式で確認するにはAPI documentationのページにあるAUTHENTICATIONをクリックします。
image.png
 この図で右側の下線部(httpsから始まり次の行のバックスラッシュの前まで)がAPI接続のURLとなります。またヘッダオプションのAuthorizationとして「Bearer {各自のアクセストークンの内容}」を指定すればよいこともわかります。”Bearer”の文字列を忘れがちなので注意します。
 それをVoiceflowのAPIブロックのプロパティ(もしくはその他のAPIテストツール)で実装します。実装後にSend Requestを実行するとAPI接続による取得データを確認できます(API接続が失敗すればエラーが表示されます)。なお、この例ではプロパティのHeadersの欄でBearer以降にアクセストークンの内容をベタで直接入力していますが実用面ではセキュリティの面から上の図にあるようにあらかじめ任意変数(例:YOUR_SECRET_API_TOKEN)に値を格納して、変数名を設定する方がよいでしょう。VoiceflowではSetブロックを使用して、変数名に値を設定できます。

なお、Voiceflowを含むAPIテストツールで設定値を修整後に、再度接続してもキャッシュの影響で修正前の設定値に対応する結果が表示されることもあります。そのときは数秒待って再実行してください。
image.png

(2)データの検索
 Airtableの便利な点は通常のAPI接続で簡単に検索や並べ替えなどの編集機能が使えることです。詳細は、AirtableのAPI DocumentationにあるList recordsをクリックすると確認できますが、ここではその一例としてデータの検索方法を紹介します。
 データの検索はList recordsの欄にある、filterByFormulaオプションで指定します。
image.png
具体的には、VoiceflowのAPIブロックのプロパティの、Parametersの欄で条件を指定します。図にはIDが1001でPHONEが0700000000のデータを検索する例を示しています。
 実際にはそのようなデータは存在しないのでSend Requestで確認すると空データを意味する"records": [ ], が戻ってきます。PHONEの部分を08012345678に変更して実行すると、今度は該当するデータが1行分戻ってきます。
image.png
 なお、例ではあえてANDを用いましたが、単に「ID=1001」と指定しても、この例でほかに該当するデータがないので同じ結果が得られます。また積集合ANDだけでなく和集合ORの条件設定もできます。
 ただし、検索語句に日本語を含める場合には図のように文字列として語句を” ”でくくる必要があります。また念のためHeadersの欄でContent-Typeとしてcharset=utf-8を指定します。図に「山本花子」のある行を検索する例を示します。
image.png
 このようにして得られるデータをVoiceflowの変数に格納するにはプロパティのCapture Responseで次のように指定します。例としてPHONEのデータ(08012345678)を受け取る変数を用意するには、対応するデータ位置は上の階層から考えて records..fields.PHONE となります。したがってそれを変数mydataにしまうには、右のように指定します。

 image.png
複数の該当データが存在する可能性のある場合には、戻り値のrecordsの要素数を調べることでデータセットの個数がわかります。
 すなわち、図のようにいったんrecordsをまるごとmydataで受けておき、Javascriptでコードを記述してたとえば「変数=mydata.length;」のようにlengthメソッドを用いればデータセットの個数がわかります。
image.png

 また複数の該当データが存在するときに、上記の例で読み取ったmydataの最初からn番目のデータセット中の値(たとえばNAMEの値)を知りたいときには要素番号[n-1]を用いて次のようにJavasriptでコードを記述します。
 変数=mydata[n-1].fields.NAME;

 直接、プロパティのCapture Responseで図のように要素位置を指定することもできますが、複数のデータがあるときにはAPI接続で呼び出すごとにデータの順序が変化する可能性があるのであまりおすすめできません。 
image.png

(3)データの追加
 データの追加はPOSTメソッドでjson形式を用いて指定します。そのため、最初の行で「POST」を選択し、APIブロックのHeaders部分に"Content-Type”として” application/json"を図のように指定します。さらに追加するデータはBodyの部分でRaw、JSONを選択してから、その下の枠内にjson形式で記入します。
image.png

 データの書式は基本的にこれまでのデータ取得の際に表示される書式と同じなので、どこかにそれをコピーしておくとよいでしょう。例では”ID”として8091、”NAME”として”山上啓太”、”PHONE”として文字列”07098957895” を指定しています(数字はそのまま記述し、文字列は ” ” でくくる)。変数の利用も可能です。
 たとえばVoiceflowの変数Pnameに”山上啓太”が格納されているのであれば、”NAME”の部分の指定を次のようにできます。
 "NAME":{Pname},   (※末尾のカンマは次の行にデータあるときのみ)
なお、この書式はすでに変数(この場合Pname)が用意されている(宣言済)場合のみ有効です。あとで変数を作成するつもりでこのような記述をしても変数としては認識されないので注意してください。実際の入力では「{」を入力した時点で変数の選択肢が現れます。

設定を終えたら、下部のSendをクリックしてこのブロック単体での動作確認を行います。Airtableの元データに、新規に行が追加されているのがわかるでしょう。設定の条件によっては数字であっても文字列として「” “」でくくらないと正常に動作しない場合もあります。

 以上のほか、各データレコードに付随するid(まぎらわしいが、サンプルデータの中にあるIDとは別のレコードを認識するための内部key)を使用してレコード単位での置換や削除などもできますが、ここでは説明を割愛します。

4.6.6   API接続を利用したデータベース取り扱い時の留意点
 外部サービスにAPIを介してアクセスする時間は内部の計算処理時間に比べると非常に遅いため、全体の処理速度を低下させるだけでなく、応答待ちの間にタイムアウトとなる恐れもあります。またサービスによっては一定時間内のアクセス回数を制限しているサイトもあります。したがってデータベースにアクセスする際には、表計算の1セルずつ入出力するようなアクセス方法は避けて、効率のよいアルゴリズムを心がけてください。
 またAPI接続に失敗しFailとなった場合も無限ループで再実行するのでなく原因に応じた処置となるアルゴリズムを組むようにしてください。

4.7 VoiceflowのAI機能を利用したAPI連携

4.7.1 概要
 VoiceflowのAgentブロック(生成AI機能)には、各種アプリケーションとAPI連携する機能があります。確実な動作は保証されないが手っ取り早く他のアプリケーションと連携したいときには便利な手段の一つといえます。Voiceflowの無料ユーザでもその一部を利用することができるので、Airtableのデータ検索を例にその使用法を説明します。
 なお参照するAirtableのデータは図に示す前節で作成したものとします。このデータをもとに、名前を入力するとAI機能によりその電話番号を返すProjectを作成する例で説明します。
image.png

4.7.2 Agentのブロック配置とプロパティ設定
 Voiceflowの処理の流れとしては、Captureブロックで名前を受け取り、それをAgentブロック(生成AI機能)に渡して検索させます。そこでStartに続いて入力を促すMessageブロックとそれを受け取るCaptureブロック、そしてAgentブロックを配置します。Captureブロックでは全入力をlast_utteranceで受け取ります。
image.png
Agentブロックのプロパティを開き、さらにEdit agentをクリックします。するとウィンドウ右側にAIと連携できるアプリの一覧が右図のように表示されます。
image.png

Airtableを選択すると、どのような形で生成AIがAirtableにアクセスするのか選択肢が現れます。
目的により異なりますが、データの検索では List recordsを選びます(Get recordsでも良さそうに見えますが、各行の内部的idが必要となるのでこの用途には適しません)。接続方法を選択すると、Connectボタンが現れるので押します。
image.png
Airtableの認証ページが開くので必要な情報を入力します。またどのbaseに接続するか、Add a baseをクリックして指定します。そしてGrant accessをクリックします。
image.png
これで接続は可能になりますがAPI接続に必要なほかの情報も指定しなければなりません。

少なくとも baseidと tableidOrName(tableidかtableName)はVoiceflowからAirtableにアクセスする際、必要なので、API接続する際のURLを調べて、その二つは確認しておきます。下に確認方法例を示します。
image.png
AirtabelでGrant accessをクリックすると次のような画面となるので、baseidとtableidOrnameの欄をクリックしてそれぞれ情報を入力します(ウィンドウが消えたら、Toolsの欄のList recordsをクリックすればよい)。情報を入力すると右のボタンの横にAgent Providedと表示されます。この情報入力ウィンドウ以外の部分をクリックすれば、このウィンドウは閉じます。
image.png
最後にInstructionsの部分に、生成AIがするべき仕事を記述します。この例では{last_utterance}に名前が入っているはずなので、単に「{last_utterance}の電話番号を教えてください」でよい。
image.png
これで準備完了なので、実行して動作を確認します。
 フルネームでなくとも図のように単に「山田さん」でも検索できます。生成AIの推測機能により、「Mr. Yamada」や「花子さん」でも検索できます。
 ただし出力に注記されているようにAI出力は完全ではありません。予期せぬ応答となることもあります。この点には留意してください。
image.png
またVoiceflowのAI機能は前述したようにToken(Credit)を大量に消費します。多用すると図のように警告が表示され、上限に達すると以降は無料では使えなくなります。なお、上限に達しても、消費Tokenは1ヶ月ごとにリセットされます。
image.png

4.7.3 まとめ
 この例ではAirtableのデータ検索の例で示しましたが、データの更新や追加などの操作でも同様にAPI接続に必要な情報を与えて、AIに任せれば目的の処理は(ほぼ)達成されます。Airtable以外のアプリでも柔軟な対応ができるので、コストの点で問題がなければ試してみるとよいでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?