hachidori
ノンコーディングでチャットボットが作れてしまうサービス「hachidori」。
少しさわっったところ直感的に作れるので非常に使いやすいと感じました。
そこで、LINEから自作API経由で自社の勤怠入力できるサービスを作ったろ!と、ごにょごにょし始めたのですが、自作APIを呼ぶところでハマったので残しておきます。
※チュートリアルを誤って消してしまったので、チュートリアルを最後までやっていればハマらなかったかもしれませんが。
連携設定
hachidoriの「連携設定」は、hachidoriと他のWEBサービスを連携する機能です。
チャットで入力された文字を他のWEBサービスに送ったり、応答をチャットに表示したりできます。
ただ、この連携設定のクセがすごい。
正常に通信できたか分からない
連携設定のテンプレートのURLにテスト通信するタイミングは「更新する」ボタンの押下時のようです。
しかし、通信に成功しようが失敗しようが画面からは結果はわかりません。
なので、通信に失敗していた場合でも、URLやクエリーパラメータの編集が誤っているのか?認証情報が誤っているのか?別の理由なのか?原因が全くわかりません。
そして、これがまた厄介なのですが、一度成功したらその時点の事を覚えているらしく、その後に誤った変更をしてしまい本来であれば通信に失敗すべきところが、前回成功時のリクエストを送信してしまい成功してしまったりします。
で、うまくいったやん!と思ってシナリオを動かすと失敗するという。
もし、連携設定をする場合は、hachidori以外で失敗時の原因の切り分けができないか考えておくといいと思います。
リクエストボディ、リクエストヘッダは固定
HTTPメソッドがGET以外も使えるため、リクエストボディの内容も可変だろうと必死でクエリーの設定を頑張りましたが無駄のようです。
どうもJ定義したもの固定で送られるようなので、可変の情報を送る場合はクエリパラメータでしか送れないことになります。
したがって、GET以外はおまけと考えてよいと思います。
クエリパラメータ
パラメータが1つだけの場合は問題ないと思いますので、ここでは複数のパラメータを送る場合について書きます。
僕は日付と開始日付と終了時刻の3つのパラメータを送りたいのですが、普通に&で繋いでもエラーになります。
1つ目のパラメータの後ろが&start_time=0900&end_time=1800
となるように、試行錯誤した結果が下記の表です。
アンパサンドの違い | 設定例 | 通信結果 | 編集結果 | 説明 |
---|---|---|---|---|
普通の& |
& start_time=;#時間1; |
失敗 | - | - |
実体参照 |
& start_time=;#時間1; |
成功 | &start_time=0900 |
パラメータの先頭にampが付く |
独自のエスケープ? |
&; start_time=;#時間1; |
成功 | &start_time=0900 |
期待通り |
まとめ
ということで、なかなかのクセとマニュアルなしという状態だったので、連携できるまでに随分と時間が掛かってしまいました。。
通信に失敗した時は、せめて原因特定につながるような情報は欲しいところですが、外部通信というちょっと技術寄りのところと、エンジニア以外の方でも作れるサービスというところで、トレードオフになってしまう所なのかなと思います。
しかしながら、このクセを差し引いても十分過ぎるほどのサービスです。本当に簡単にチャットボットが作れてしまうので、アイデアを思いついたらすぐに形にすることが可能です。
そのようなものに無料枠があるというのは本当にありがたいことです。