要約:Contact Formで送信したらChatworkにタスク作るようにWebhooksを使って設定してみた。が、Craft CMSのJobがCP(管理画面)にアクセスすることで実行されるので、実用的ではない。
Craft CMSにはContact Formというプラグインがあり、簡単にお問い合わせフォームを設置することができます。フォームからお問い合わせすると指定したメールアドレスにお問い合わせ内容を送信します。今回はこの内容を使ってChatworkのタスクを作成する手順を紹介します。
お問い合わせフォーム設置
プラグインストアからインストールし、手順通りに作成すればOKなのでここは割愛します。
Webhooksプラグインインストール
Chatworkのタスクを作るためにWebhooksプラグインをインストール、設定します。
インストール・アクティベート
プラグインストアからインストール・アクティベートします。
設定画面でWebhook作成
管理画面メニューのWebhooks -> Manage Webhooksにアクセスし、『New Webhook』ボタンをクリックします。

するとこんな画面が出てきます。ここで設定していきます。
- Name : Webhookの名前です。適当なものをどうぞ
- Sender Class : Webhookを実行するイベントを持つクラスを指定します。今回はお問い合わせフォームデータクラスの “craft\contactform\models\Submission” を指定します。
- Event Name : Webhookを実行するイベントを指定します。上記のクラスには “afterValidate” というエラーチェック後用のイベントがあるのでこれを利用します。
- Request Method & URL : こちらはChatwork APIのタスク作成エンドポイントを利用します。MethodはPOST、URLには “https://api.chatwork.com/v2/rooms/{room_id}/tasks”を指定します。{room_id}にはタスクを作るChatworkルームのIDを指定します。
- Custom Headers : APIへのリクエスト時に追加するリクエストヘッダを指定します。”X-ChatWorkToken”にChatworkトークンを、POSTデータを送信するために”Content-Type”に”application/x-www-form-urlencoded”を指定します。
さらに、Payload(送信データ)をセットするため “custom payload” をチェックし、Payload Templateに以下を記述します。
{% set entry = event.sender %}
{{
{
to_ids: {アカウントID},
body: "お問い合わせがありました\n\nお名前: "~entry.fromName~"\nメールアドレス: "~entry.fromEmail~"\nお問い合わせ内容: "~entry.message
}|url_encode|raw
}}
{アカウントID}には送信したいユーザのアカウントIDを指定します。Chatwork IDではないので注意してください。




ここまで設定したら保存しましょう。では実際にお問い合わせしてみます。








無事Chatworkのタスクが作成されました。なお、Webhookの実行結果は管理画面メニューのWebhooks -> Activityで確認することができます。




ばっちりChatworkにタスクできるんですが、すぐにタスクができたり全然できなかったりなぜか不安定。なぜだろうと調べたところ。。Stack Overflowに
Keep in mind Jobs are only executed when someone enters the CP
WebhooksはどうもJobを発行して、Job実行でAPIリクエストするようで、このJobがCP(管理画面)にアクセスすることで実行されるようです。フロント画面でのイベントに対してWebhooksを仕込んだとしても、実行されるのは誰かが管理画面にアクセスした時なので、あまり実用的ではないということが判明しました。
いいところまで言ったのに残念。
ということで、お問い合わせ送信時にChatworkのタスクを作るのであればContact Formのイベントをフックにして、独自で仕込んだ方が良さそうです。