チャットボットのAPIでA3RTのTalk APIを使った
2022/04/28
Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbotの記事に書いているとおり、Microsoft Teamsからボットの雑談機能として、docomo Developer supportさんの自然対話APIサービスを利用させていただいておりました。
10/1にメールをいただいていて、「2018年11月1日以降は機能制限により、レスポンスに10秒程度の時間を要する場合や、2018年10月31日以前と同様の対話をご利用いただけない可能性がございますので、ご了承ください。」とのこと。
雑談の感じとかすごく自然だなあって思ってたので、無料で使えるのはそりゃあ制限があっても仕方ないなあと思いました。
※docomoさんでは、後継サービスで katarai というサービスもあります。
まあいいかな、と思ってたのですが、Teamsは5秒以内にレスポンスを返さないとエラーになって「Sorry, there was a problem encountered with your request」というメッセージをTeamsに表示します。
リクエストを受け付けている自作のAPI側ではエラーは一切出てないので原因が分からず、最終的にはただのオウム返しでsleepで1秒づつのばして5秒かあとなりました。
改善案としてTeamsのFeedbackに出されている方がいるので、緩和されることを願います。
adjustable timeout on the outbound webhook reply (5 seconds not long enough)
とはいえ、このままにしておくわけにもいかないので、とりあえずレスポンスの早い無料の対話APIを探してみました。
ありました!
A3RT
リクルートテクノロジーズさんのA3RT(アート)にTalk APIがありました。
他にも画像系や文章系、レコメンド、SQL生成などいろんなAPIがあります。
面白そうなのでまた試してみたいと思います。
APIキーを発行して、Talk APIの公式ページにかかれているとおり、エンドポイントに対して、apikeyとqueryをパラメータにして、POSTSすれば返答が返ってきます。
pya3rtというモジュールもあるのでそれを使うと簡単です。
apikeyはTALKAPIKEYという環境変数に設定しています。
1 2 3 4 5 6 7 8 9 |
import os import pya3rt def talkapi_response(text): apikey = os.environ.get('TALKAPIKEY', '') client = pya3rt.TalkClient(apikey) response = client.talk(text) return response['results'][0]['reply'] |
使わなくてもya3rt.TalkClient(apikey).talkを見ると、次のようなコードなので、パラメータ設定して、POSTしているようです。
1 2 3 4 5 6 7 8 |
def request(endpoint, apikey, query, callback): params = { 'apikey': apikey, 'query': query, } response = requests.post(endpoint, params) return response.json() |
用意している対話モデルで対応できないときに使いたいのが雑談系APIなので、当面はA3RTを利用させていただこうと思います。
後日、雑談が使用できなくなり、調べたらAPIエンドポイントが変更されていたので対応しました。
A3RTのTalk APIエンドポイントが変更していたので修正しました
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
A3RTのTalk APIエンドポイントが変更していたので修正しました
チャットボットのAPIでA3RTのTalk APIを使った LINEやTeams …
-
Slackでチームを作成してbotから投稿出来るようにする
Slackで新しいチームを作成して、botが投稿出来るように設定します。 ※20 …
-
Zoom APIをPostmanで試す
ビデオコミュニケーションサービスのZoomには豊富なAPIが用意されています。 …
-
Twilioで電話を受ける人の仕事を少し楽に出来ないか考えてみた
Twilio Advent Calendar 2017の参加記事です。 Twil …
-
RocketChatのスレッドと返信をPythonで取得する
RocketChatのOutgoing Webhookを使って、投稿と返信をki …
-
Stripe CheckoutをローカルのPythonで試す
Stripe Advent Calendar 2017の参加記事です。 Stri …
-
Zoom API でミーティング作成を試す
Zoom APIをPostmanで試すの環境で、ミーティングスケジュールを新規作 …
-
docomo Developer supportの 雑談対話APIから自然対話APIへ移行しました
LINEやSlackのbotで重宝していた、雑談対話APIが終了する、とのことで …
-
D-IDでTalks APIを使って動的にビデオを作成する
D-IDでは1枚の写真をもとに表情豊かにテキストをしゃべらせることができます。 …
-
「API Meetup Tokyo #29 ニッポンのAPIエコノミー最前線 〜国産APIが社会を変える〜」に参加しました
API Meetup Tokyoに来ました〜 会場はおしゃれなDEJIMAさんで …