Scribble at 2021-07-05 09:53:28 Last modified: 2021-07-05 10:03:32

これまで、当社のコーポレートサイトで問い合わせフォームからの送信を受けた際には、もちろん一般的な方法で PHP のメール関数を使って当社の決まったメール・アドレスへメールを送信してきた。そして、会社のコミュニケーション・ツールとして ChatWork のビジネス版を契約して使い始めてから、ChatWork が API を提供するようになった後に、ChatWork の専用グループを作って、そこへ問い合わせの内容を投稿するようにもした。

この投稿は、Zapier という "workflow automation" ツールのサービスを使っていた。Zapier で "inbound" 専用に作成したエンド・ポイント用のメール・アドレス、たとえば test.9sad8FOOBAR@zapier.com のように Zapier から発行された(ローカル部の一部分は自分で任意の文字列を設定できる)メール・アドレスへメールを送信すると、そのメール・アカウントでメールを受信したというイベントがエンド・ポイントとなって、自動処理が始まる(他に、cron のような定時のタスクとしても自動処理を定義できる)。後続の処理内容は、Zapier がサポートしている様々なサービス(の API)から選べるので、ChatWork の特定のグループへ投稿するという処理でもいいし、GMail にメールを送信したり、Slack, Salesforce Chatter, Twitter に投稿したりもできる。そういうことで、問い合わせの専用として作った ChatWork のグループへ問い合わせ内容を投稿してきたわけである。

このほど、既に書いたように ChatWork のアカウントごとの利用料金が10月から4倍になってしまうため、Google Chat への移行を始めたところだ。すると、この問い合わせフォームから Zapier を連携させて ChatWork のグループへ投稿していた実態も、できれば移行したい。Google Chat には bot として Zapier をメンバーにできるため、まず Zapier で設定したエンド・ポイントのメール・アドレスに着信すると、Zapier から Google Hangout and Chat という API を使った処理に連携させられるので、試しに設定してみた。しかし、これは残念ながら正しく動かなかった。Google Workspace の管理者権限で「許容する bot」として Zapier を追加しているのだが、Google Chat のチャットルームに追加できる bot として Zapier が出てこない。設定を変えても反映されるまでに時間がかかることはあるが、こういうことに何分もかかるようでは困る。

そういうわけで、Zapier を使った自動処理は諦める他になかったのだが、Google には API があるので、少し調べてみたら Google Chat にも API がある。ならば、これまで会社の問い合わせフォームで Zapier のエンド・ポイントであるメール・アドレスにメールを送ってきた PHP のコードを書き換えて、問い合わせ内容を処理してメールを送信すると同時に Google Chat のチャットルームにも API で問い合わせ内容を投稿すればいいだけのことだ。そして、Google Chat の API を使った投稿方法を調べたら、API に準拠した SDK をどうこうするどころか、単純に "webhook" としてチャットルームで定義した専用のエンド・ポイント URL(投稿用のキーとトークンがクエリとしてセットになっている)へ cURL 関数で(JSON 形式にエンコードしただけの)メッセージを送信すればいいだけのことだった。これは簡単だ。

----------

※ なお、英単語として分かち書きしている表現は日本語でも中黒(・)を使って分かち書きする方針を採用しているのだが、オリジナルの表現(サービス名、社名、機能名など)で分かち書きしていない場合は、上記の文章でも「チャットルーム」のように、「チャット・ルーム」と分かち書きはしない。それから、Google の英語版では単に "rooms" としか表記していないので、なんでわざわざ日本語版で「チャットルーム」などと表記しているのか、やや困惑させられる。「ルーム」と書くと何かと混同する人がいるのだろうか。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook