コンソールを切り替えたり、手動で API リクエストを作成したりすることなく、AI エージェントから直接 WhatsApp メッセージの送信、テンプレートのクエリ、セッションの管理ができます。
前提条件
Alibaba Cloud のサブアカウントの AccessKey ID と AccessKey Secret を取得します。メインアカウントは Resource Access Management (RAM) コンソール でユーザーを作成し、必要な Chat App Message Service (CAMS) の権限を付与します。
Chat App Message Service コンソール を有効化し、以下の手順を完了します。
WhatsApp Business Account (WABA) をバインドします。
送信者の電話番号 (From) を登録し、承認を得ます。
メッセージテンプレートを作成し、承認を得ます。これはテンプレートメッセージを送信するために必要です。
主要な機能と利点
国際注文通知、マーケティングキャンペーンのリーチ、カスタマーサービスのフォローアップなど、一般的なビジネスシナリオをカバーします。
機能 | 説明 |
テンプレートメッセージの送信 | 24 時間のセッションウィンドウ外で WhatsApp テンプレートメッセージを送信します。マーケティング通知、注文ステータスの更新、認証コード、物流リマインダーなどのユースケースで変数の置換をサポートします。 |
カスタムメッセージの送信 | 24 時間のセッションウィンドウ内でフリーフォームメッセージを送信します。テキスト、画像、動画、音声、ドキュメント、インタラクティブ、位置情報の 7 種類のメッセージタイプをサポートします。 |
クエリテンプレートリスト | 承認ステータス、テンプレートタイプ、または言語でテンプレートをフィルタリングし、エージェントが自動的に選択するか、ユーザーにオプションを表示できるようにします。 |
クエリテンプレートの詳細 | 特定のテンプレートの変数構造を取得し、エージェントがユーザーにパラメーターを 1 つずつ入力するようにガイドすることで、パラメーターの数やフォーマットの不一致を防ぎます。 |
主な利点:
対話形式のメッセージ送信:Claude Code、Qwen Coder、OpenClaw などのエージェントツールで自然言語を使用して、テンプレートのクエリ、変数の入力、メッセージの送信をコンソールに切り替えることなく行えます。
パラメーター構築コストの削減:従来の API 呼び出しでは厳密なフォーマットの Content JSON が必要で、フォーマットエラーが発生すると失敗する可能性があります。エージェントは有効な JSON を自動的に構築し、変数のマッチングを支援します。
自動エラー診断:一般的なエラーコードに対する組み込みの診断とソリューションの提案。たとえば、
SessionWindowExpiredエラーが発生した場合、スキルは自動的にテンプレートメッセージのワークフローに切り替わります。RAM 権限が不十分な場合は、権限申請プロセスをガイドします。送信前の確認:すべてのカスタマイズ可能なパラメーター (From、To、テンプレート、変数、Content JSON) は、送信前にユーザーの明確な確認を必要とし、メッセージが正確に配信されることを保証します。
サポートされている機能:
テンプレートリストと詳細を対話形式でクエリし、利用可能なテンプレートとその変数構造を見つけます。
テンプレートメッセージとカスタムメッセージを自動的に送信し、24 時間のセッションウィンドウ外のユーザーにリーチできます。
セッションウィンドウの期限切れを検出し、自動的にテンプレートメッセージのフローに切り替えます。
多言語テンプレート (en、zh_CN、zh_HK など) を使用します。
--cust-space-idパラメーターを通じて、独立系ソフトウェアベンダー (ISV) のマルチテナントシナリオを処理します。
インストール方法
Alibaba Cloud Skill Marketplace からのインストール (推奨)
Alibaba Cloud Skill Marketplace にアクセスし、「ChatApp Message Sending」を検索してインストールします。
ClawHub からのインストール
ClawHub プラットフォームにアクセスし、「alibabacloud-chatapp-message-send」を検索して、スキルのドキュメントを表示し、インストールします。
その他のインストール方法
Claude Code でのインストール
Claude Code の公式ドキュメントをご参照ください。
ダウンロードしたスキルパッケージを解凍し、Claude Code の skills ディレクトリに移動します。
グローバルスコープ (すべてのプロジェクト) の場合:スキルを
~/.claude/skills/ディレクトリに移動します。プロジェクトレベルのスコープ (現在のプロジェクトのみ) の場合:スキルを
project_root/.claude/skills/ディレクトリに移動します。
ディレクトリを移動した後、Claude Code を再起動して変更を有効にします。
OpenClaw でのインストール
ダウンロードしたスキルパッケージを解凍し、スキルのディレクトリへのパスをコピーします。OpenClaw でパスを入力し、「このディレクトリのスキルをインストールしてください」と指示します。スキルを使用する前に、確認メッセージを待ちます。
環境設定
Aliyun CLI >= 3.3.3
aliyun version を実行して現在のバージョンを確認します。Aliyun CLI がインストールされていない、またはバージョンが古い場合:
# macOS または Linux の場合、最新バージョンをインストールまたはアップグレードします:
curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash
# バージョンを確認します (3.3.3 以上である必要があります)
aliyun versionCLI 呼び出しを行う前に、プラグインの自動インストールと ai-mode を有効にしてください。
aliyun configure set --auto-plugin-install true
aliyun plugin update
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent \
--user-agent "AlibabaCloud-Agent-Skills/alibabacloud-chatapp-message-send"タスクが正常に完了したか、エラーが発生したかにかかわらず、セッションが終了する際には必ず ai-mode を無効にしてください。終了する前に aliyun configure ai-mode disable を実行します。
CAMS プラグインのインストール
aliyun plugin install --names aliyun-cli-cams認証情報の検証
認証情報を保護するために、以下のプラクティスに従ってください。
ターミナルやチャットで AccessKey ID や AccessKey Secret の値を表示または出力しないでください。
会話やコマンドラインで AccessKey ID や AccessKey Secret を直接入力しないでください。
aliyun configure setをプレーンテキストの認証情報とともに使用しないでください。aliyun configure listを使用して、有効な認証情報プロファイルが存在することを確認します。
aliyun configure list出力で有効なプロファイル (AccessKey (AK)、セキュリティトークンサービス (STS)、または OAuth) を確認します。有効なプロファイルが存在しない場合は、先に進まないでください。RAM コンソールから認証情報を取得し、セッション外で aliyun configure または環境変数を使用して設定してから続行してください。
RAM 権限
以下の RAM アクションが必要です:
API | アクション | 説明 |
SendChatappMessage | cams:SendChatappMessage | メッセージの送信 |
ListChatappTemplate | cams:ListChatappTemplate | テンプレートリストのクエリ |
GetChatappTemplateDetail | cams:GetChatappTemplateDetail | テンプレート詳細のクエリ |
ListChatappMessage | cams:ListChatappMessage | メッセージリストのクエリ |
最小権限ポリシーの JSON:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cams:SendChatappMessage",
"cams:ListChatappTemplate",
"cams:GetChatappTemplateDetail",
"cams:ListChatappMessage"
],
"Resource": "*"
}
]
}ユースケース
国際注文通知
出荷通知、物流の更新、支払い確認は、越境 EC で一般的です。
以前は、運用スタッフは適切なテンプレートを見つけ、変数を入力し、電話番号を準備してから、コンソールやスクリプトを通じてメッセージを送信する必要がありました。このスキルを使えば、エージェントにニーズを伝えるだけで、テンプレートのマッチング、変数の入力、メッセージの送信、結果のレポートを処理します。
マーケティングキャンペーンのリーチ
国際マーケティングでは、新製品の発表、プロモーションのリマインダー、メンバーの再エンゲージメントに WhatsApp がよく使用されます。
WhatsApp のテンプレートメッセージは事前に承認される必要があり、このスキルは Meta のテンプレート審査期間を短縮するものではありません。しかし、テンプレートが承認されれば、エージェントはそれをより効率的に使用するのに役立ちます。また、電話番号のフォーマットやテンプレートのマッチングを検証し、顧客リストを処理し、変数をマッチングし、メッセージを順番に 1 つずつ送信し、結果を確認することもできます。
カスタマーサービスのフォローアップ
24 時間のセッションウィンドウは、カスタマーサービスにおける重要なルールです。顧客が会話を開始した後、ビジネスはこのウィンドウ内でフリーフォームメッセージを送信できます。ウィンドウ外では、テンプレートメッセージが必要です。
このスキルは、エージェントがフリーフォームメッセージとテンプレートメッセージのどちらを使用するかを判断し、適切な方法を推奨するのに役立ちます。これにより、カスタマーサービススタッフの認知負荷が軽減され、送信失敗を防ぐことができます。
よくある質問
このスキルはどの AI エージェントツールをサポートしていますか?
現在、Claude Code、Cursor、OpenClaw、Qoderwork、Wukong など、Agent Skills 標準に準拠したツールをサポートしています。より多くのプラットフォームへのサポートは開発中です。
このスキルの機能とコンソールの機能の違いは何ですか?
このスキルは、テンプレートメッセージの送信、カスタムメッセージの送信、テンプレートリストのクエリ、テンプレート詳細のクエリをサポートしています。テンプレートの作成やその他のメッセージコンソールの機能はまだサポートされておらず、コンソールでの手動操作が必要です。
アカウントを登録せずにメッセージを送信できますか?
いいえ。Alibaba Cloud アカウントに登録し、Chat App Message Service を有効化し、WABA をバインドし、送信者の電話番号とメッセージテンプレートの登録と承認を完了する必要があります。
個人ユーザーはこのサービスを利用できますか?
個人ユーザーは、有効なビジネス資格を提供する場合にのみサービスを利用できます。個人の資格でのサービス利用はサポートされていません。
テンプレート変数は特定のフォーマットで入力する必要がありますか?
はい。テンプレート変数は数値順に入力する必要があります (例:1=value1 2=value2 3=value3)。エージェントは、数やフォーマットの不一致を防ぐために、それぞれを確認するようにガイドします。
どのテンプレートを使用してメッセージを送信できますか?
ステータスが「承認済み」で、言語がターゲットユーザーと一致する任意のテンプレートを使用できます。list-chatapp-template --audit-status pass コマンドを使用して、承認済みのテンプレートをクエリできます。
一度に何件のメッセージを送信できますか?
はい。複数の電話番号がある場合は、複数のユーザーに送信できます。ターゲットの電話番号のリストをエージェントに提供してください。
カスタムメッセージは 24 時間以内にしか送信できませんか?
はい。WhatsApp のカスタムメッセージは、ユーザーの最後のメッセージから 24 時間以内にのみ送信できます。この期間を過ぎると、SessionWindowExpired エラーが表示され、エージェントは自動的にテンプレートメッセージのワークフローに切り替わります。
一般的なエラーコード
エラーコード | 説明 | ソリューション |
InvalidParameter.FromOnlyNumeric | 電話番号に「+」記号が含まれています。 | API では、電話番号を数字のみの形式にする必要があります。先頭の |
DetailError.TemplateNotExist | テンプレートが存在しません。 |
|
TemplateParamInvalid | テンプレート変数が無効です。 | 変数の数とフォーマットがテンプレートと一致するかどうかを確認してください。 |
SessionWindowExpired | 24 時間のセッションウィンドウが期限切れになりました。 | テンプレートメッセージのワークフローに切り替えてください。 |
InvalidParameter.FromError | from の値が見つかりません。 |
|
Forbidden.RAM | RAM 権限が不十分です。 |
|
InvalidAccessKeyId.NotFound | AccessKey ID が無効です。 | AccessKey ID を確認してください。 |
SignatureDoesNotMatch | AccessKey Secret が正しくありません。 | AccessKey Secret を確認してください。 |
RAM 権限が不十分なためにコマンドが失敗した場合、スキルは不足している権限を特定し、申請プロセスをガイドします。変更を確認すると、元のコマンドが自動的に再開されます。