はじめに
EC-CUBEのプラグインについて知識を深めるのと、ChatworkのAPIに興味があったので、ついででChatwork API連携プラグインを作ってみました。
その特徴と仕様を下記にまとめます。(ChatGPTまとめ)
📌 概要
このプラグインは、EC-CUBE4.3とChatworkを連携させることで、以下の機能を提供します:
- お問い合わせや注文完了時にChatworkへ通知を送信
- 通知内容、ルームID、APIキーを管理画面から設定可能
- Symfony HttpClientを使用してChatwork API v2を呼び出し
✅ 主な仕様
項目 | 内容 |
---|---|
通知トリガー | お問い合わせ(MAIL_CONTACT)および注文完了(MAIL_ORDER) |
送信先 | 指定されたChatworkグループチャット(Room ID) |
通知内容 | 件名、送信者、本文を含むテンプレートメッセージ |
API連携 | Chatwork API v2(トークン認証) |
設定項目 | APIキー、ルームID、通知のON/OFF切替 |
安全設計 | 通知失敗時はログに記録し、ユーザーには影響を与えない設計 |
テスト機能 | 管理画面から接続テスト、ルーム情報取得、テストメッセージ送信が可能 |
🧩 構成
-
Entity :
Config.php
(APIキー、ルームID、通知ON/OFFの設定) -
FormType :
ConfigType.php
(設定フォームの定義) -
Controller :
ConfigController.php
(設定画面の制御) -
Service :
ChatworkApiService.php
(API呼び出しと通知処理) -
EventListener :
Event.php
(メール送信時のフック処理) -
ナビゲーション追加 :
Nav.php
(管理画面メニューへの追加)
✉️ 通知メッセージフォーマット
通知メッセージは以下の形式でChatworkに送信されます:
件名: {件名}
送信者: {送信元のメールアドレス}
本文:
{本文}
例:
件名: 商品についての問い合わせ
送信者: user@example.com
本文:
商品Aの在庫はありますか?
🛡️ 通知失敗時の挙動
通知処理中にエラーが発生した場合でも、ユーザーには影響を与えず、ログにエラー情報を記録します:
try {
$this->chatworkApiService->notify('お問い合わせ通知', $body);
} catch (\Throwable $e) {
$this->logger->warning('[ChatworkApi] 通知失敗: ' . $e->getMessage());
}
⚙️ 管理画面からの接続テスト機能
管理画面には以下のテストボタンが用意されています:
- 接続テスト(
/v2/me
) - ルーム情報取得(
/v2/rooms/{room_id}
) - テストメッセージ送信(
/v2/rooms/{room_id}/messages
)
🎨 管理画面UI
-
c-toggleSwitch
を使用した通知ON/OFFの切替スイッチ - Bootstrapベースのフォームレイアウト
- 管理画面ナビゲーションに「Chatwork API 設定」を追加
🔗 関連リンク
🙌 最後に
もしよければご自由にご活用ください。
改善案やフィードバックなどありましたら、コメント欄でぜひ教えていただけると嬉しいです 😊