以下で紹介されていたローコードプラットフォーム「Autocode」、Voiceflow Dialog Management APIの実行環境として使えるんではないか?ということで、ちょっと試してみた。
目次
まずは触ってみる
上記サイトで紹介されているのをまず一通りやってみた所感としては、
- いろいろなサービスとの連携がライブラリ化されている実行環境がセットになってるリッチなIDE、という感じ
- サンプルにもあるDiscordとの連携を試してみた感じ、コード補完が使いやすく、パラメータもGUIで設定できたり、と各サービスのAPIドキュメントを見なくても簡単にかける
ということで、Voiceflow Dialog Management APIを、Autocodeで予め連携が用意されているものとつなげるならば、とても楽にかける気がします。
ただ、Discordも個人的にはあんまり使ってないし、まずは以下で作ったWebサイトチャットボットの普通のバックエンドAPIとして使いたい。
この場合、
- マルチターンな会話の場合には、cookieを使ったセッション処理が必要になる
- CORSに対応させる必要になる
というところで、Webサーバ部分の処理をある程度書かないといけないのだけど、このあたりはAutocodeではあまり気にしなくて良さそうな部分っぽくて、ドキュメント見ててもあまりピンとこない。
そこで、いろいろ調べつつまずはよくあるカウンターを書いてみました。
// authenticates you with the API standard library // type `await lib.` to display API autocomplete const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN}); const cookie = require('cookie'); console.log(JSON.stringify(context.http.headers, null, 2)); let counter = 1; if (context.http.headers.hasOwnProperty('cookie')){ let cookies = cookie.parse(context.http.headers.cookie); counter = cookies.hasOwnProperty('counter') ? Number(cookies.counter) + 1 : 1; } const body = { "counter": counter }; return { headers: { 'Content-Type': 'application/json', 'Set-Cookie': cookie.serialize('counter', counter) }, statusCode: 200, body: Buffer.from(JSON.stringify(body)) };
expressの場合、cookieやセッション周りの処理はexpress-sessionあたりを使えば色々隠蔽されてシンプルに書けるのだけど、Autocodeだと
- cookieを渡す場合はカスタムレスポンスを使って自分でset-cookieしないといけなさそう。
- cookieを取り出す場合、リクエストはcontextに全て入っているので、cookieを取り出して、自分でパースしないといけなさそう。
ということで、上記のような感じに。なんていうか、expressにはだいぶ甘やかされてるんだなという気がしたw
単にクライアント側のcookie使ってやり取りしてるだけでサーバーサイドでセッション管理とか何もやってないし、CORSあたりも考えないといけないので、先は長い・・・
参考
HTTPリクエストの取り出し方
カスタムなHTTPレスポンスを返す
npmパッケージも使える
今回はクライアントcookieしか使ってないけど、セッションやるなら多分このへん。アプリ単位じゃなくてアカウント単位ってところはちょっと気をつけないといけないかも。PostgreSQL/Airtable/Google Sheetsあたりを使ってもいいかもしれない。