全部产品
Search
文档中心

Chat App 消息服务:通过API发送Chat App消息

更新时间:Nov 20, 2025

Chat App 消息服务提供创建模板、发送消息、批量发送消息等API接口,您可以通过调用API接口,给目标用户发送Chat App消息。本文以WhatsApp类型通道为例,其他类型通道可作参考。

您可以根据业务需要和自身情况选择合适的方式调用Chat App 消息服务API:

  • 阿里云OpenAPI开发者门户

    适用于习惯交互式操作界面的场景,或者初次使用阿里云产品的开发者用户。您可以在OpenAPI开发者门户中调试和获取SDK请求示例。

  • SDK参考

    支持多种编程语言,包括JavaGoPHPPython等。使用SDK集成Chat App 消息服务,可提升您使用Chat App 消息服务的开发效率。

  • 自定义封装API调用(不推荐)

    阿里云SDK已经封装了签名、超时、重试等机制,我们建议您使用SDK进行集成,降低开发成本。如果您需要自行封装请求来进行API调用,请参见SendChatappMessage-发送ChatApp消息签名示例代码

本文将以SDK的方式引导您使用Chat App 消息服务。您可以先通过OpenAPI开发者门户,查看Chat App 消息服务API后,根据本文指引开始集成Chat App 消息服务API。整体流程:

image

准备工作

准备事项

说明

相关文档

注册阿里云账号

企业实名认证

  • 企业认证表示账号持有者是企业或政府部门,以企业身份使用Chat App 消息服务

  • Chat App 消息服务暂不支持个人实名认证。

注册阿里云账号

企业实名认证

服务开通

登录Chat App 消息服务控制台,开通Chat App 消息服务

-

用户权限

阿里云主账号拥有较高权限,建议您通过RAM用户进行API调用和日常运维。

您可以通过RAM控制台,单击RAM用户名称查看用户权限。请确保您所调用API的RAM用户已有Chat App 消息服务相关权限:

  • AliyunCamsFullAccess:管理Chat App 消息服务的权限。

创建RAM用户

为RAM用户授权

自定义授权信息

AccessKey ID

您可以登录RAM控制台,单击RAM用户名称查看AccessKey ID。

创建AccessKey

AccessKey Secret

创建后不支持二次查看。若本地无备份,建议重新创建一对AccessKey使用。

环境配置

本文以Java语言为例,进行后续操作。更多语言及其SDK安装方式,请参见安装与使用流程

  1. 检查Java环境:您的Java版本需高于Java 8。Java环境配置的方法,请参见在Windows搭建Java开发环境

  2. 安装SDK:请通过配置Maven依赖,完成Chat App 消息服务SDK的安装。

    请在您的Maven项目的pom.xml文件中,在<dependencies>标签内添加以下信息并将 the-latest-version 替换为最新版本号。保存后请重新加载Maven依赖。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>alibabacloud-cams20200606</artifactId>
      <!-- 请将 'the-latest-version' 替换为最新版本号:https://mvnrepository.com/artifact/com.aliyun/alibabacloud-cams20200606 -->
      <version>the-latest-version</version>
    </dependency>
  3. 配置环境变量:为避免在代码中显式地编码创建AccessKey(AccessKey)而造成泄露,建议您把AccessKey在Linux、macOS和Windows系统配置环境变量,通过环境变量进行读取。配置后请重启或刷新您的编译运行环境,包括IDE、命令行界面、其他桌面应用程序及后台服务,以确保最新的系统环境变量成功加载。

  4. 配置代理(可选):如果您需要通过代理服务器访问,可通过SDK进行配置,请参见代理配置

API基本信息

Chat App 消息服务所提供的API基本信息参见如下:

接口版本

2020-06-06

接口风格

RPC

服务接入点

(Endpoint)

公网接入地址:cams.ap-southeast-1.aliyuncs.com

建议您在调用API接口前,阅读接口参数规范与使用说明。在线调试API概览

API调用流程

image
  1. 创建通道:在通道管理界面创建通道。

    1. 通道即指您在使用Chat App消息服务时消息发送所使用的通道类型。支持WhatsApp、Viber、Messenger、Instagram、Email通道类型。

    2. 您需选择适合自己的通道类型,不同类型的通道只能发送各自类型的消息。

  2. 注册并绑定WABA:使用ChatappBindWaba接口绑定WABA。

    • 在调用该接口前,您需已有注册的WABA账号,通过API的方式无法注册WABA账号,若您没有已注册的WABA账号,您可在Chat App 消息服务控制台通过嵌入式页面注册WABA。

    • WhatsApp Business Account(WABA)是指企业发送WhatsApp商业消息前需要注册的WhatsApp官方业务账户,用于发送商业消息。经过WhatsApp企业认证的WABA会获得认证标志,提高客户对企业信息的信任度,增强品牌形象,减少虚假信息的干扰。您可以通过Facebook官方嵌入式快速注册WABA。

  3. 新增号码:使用AddChatappPhoneNumber接口新增号码。新增的号码将用于发送WhatsApp消息。

    • 通过同步号码,您可以将已绑定且通过审核的WABA下的号码与BM平台进行同步,使用ChatappSyncPhoneNumber接口同步号码信息。

    • 号码迁移允许客户将在其他BSP已注册的电话号码通过号码迁移功能迁移至阿里云。迁移后的电话号码会保留原有显示名、质量评分、发消息限制、官方商业账号状态和之前已经过审的所有高质量消息模板。您可使用CreateChatappMigrationInitiate接口创建需要迁移的号码。

  4. 验证号码:使用GetChatappVerifyCode接口获取号码验证码、再使用ChatappVerifyAndRegistr接口验证号码、验证号码后,使用GetPhoneNumberVerificationStatus接口获取号码验证状态。

  5. 创建并设计模板:使用CreateChatappTemplate接口创建并设计模板。模板创建成功后,将自定进入审核流程,再通过GetChatappTemplateDetail接口查询模板审核详情。

    • 模板进入审核流程后,您需后续持续关注模板审核状态。一般在五分钟之内完成审核,偶尔会出现审核超过24小时的情况。

    • WhatsApp消息模板在审核的过程中可能会出现类别自动变更的情况,您可在调用CreateChatappTemplate接口时,将CategoryChangePaused参数设置为true,具体详情请参见WhatsApp消息模板类别变更及发送控制设置

  6. 发送Chat App消息:使用SendChatappMessage接口,或使用SendChatappMassMessage接口批量发送消息。

  7. 查看Chat App消息发送详情:通过ChatAppStatus(轻量消息队列模式 | Http批量推送模式)回执消息接收ChatApp消息发送状态报告。

  8. 接收Chat App上行消息:通过ChatAppInbound(轻量消息队列模式 | Http批量推送模式)回执消息接收Chat App上行消息。

更多接口信息,请参见API概览

示例代码

使用SDK发送Chat App消息(调用SendChatappMessage接口)的代码示例如下,请根据注释完成参数填写。

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用凭据初始化账号Client</p>
     * @return Client
     *
     * @throws Exception
     */
    public static com.aliyun.cams20200606.Client createClient() throws Exception {
        // 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://www.alibabacloud.com/help/doc-detail/2542825.html。
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setCredential(credential);
        // Endpoint 请参考 https://api.aliyun.com/product/cams
        config.endpoint = "cams.ap-southeast-1.aliyuncs.com";
        return new com.aliyun.cams20200606.Client(config);
    }

    public static void main(String[] args_) throws Exception {

        com.aliyun.cams20200606.Client client = Sample.createClient();
        java.util.Map<String, String> templateParams = TeaConverter.buildMap(
                //此处需替换成您模板中的变量名称及取值
                new TeaPair("name", "张三"),
                new TeaPair("sex", "男")
        );
        com.aliyun.cams20200606.models.SendChatappMessageRequest sendChatappMessageRequest = new com.aliyun.cams20200606.models.SendChatappMessageRequest()
                //发送ChatApp消息的参数,此处需替换成您实际使用的参数。
                .setTemplateParams(templateParams)
                .setTemplateCode("XXXXXXXXXXX")
                .setChannelType("whatsapp")
                .setType("template")
                .setLanguage("en")
                .setFrom("XXXXXXXX")
                .setTo("XXXXXXXX")
                .setCustSpaceId("XXXXXXXXXXX");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.sendChatappMessageWithOptions(sendChatappMessageRequest, runtime);
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

您可以访问 OpenAPI开发者门户,查看各语言 SDK 请求完整示例。如果您需要自行封装请求来进行API调用,请参见SendChatappMessage - 发送ChatApp消息签名示例代码

常见问题