Chat App 消息服务提供创建模板、发送消息、批量发送消息等API接口,您可以通过调用API接口,给目标用户发送Chat App消息。本文以WhatsApp类型通道为例,其他类型通道可作参考。
您可以根据业务需要和自身情况选择合适的方式调用Chat App 消息服务API:
适用于习惯交互式操作界面的场景,或者初次使用阿里云产品的开发者用户。您可以在OpenAPI开发者门户中调试和获取SDK请求示例。
支持多种编程语言,包括Java、Go、PHP、Python等。使用SDK集成Chat App 消息服务,可提升您使用Chat App 消息服务的开发效率。
自定义封装API调用(不推荐)
阿里云SDK已经封装了签名、超时、重试等机制,我们建议您使用SDK进行集成,降低开发成本。如果您需要自行封装请求来进行API调用,请参见SendChatappMessage-发送ChatApp消息和签名示例代码。
本文将以SDK的方式引导您使用Chat App 消息服务。您可以先通过OpenAPI 开发者门户,查看Chat App 消息服务API后,根据本文指引开始集成Chat App 消息服务API。整体流程:
准备工作
准备事项 | 说明 | 相关文档 |
注册阿里云账号 企业实名认证 |
| |
服务开通 | 登录Chat App 消息服务控制台,开通Chat App 消息服务。 | - |
用户权限 | 阿里云主账号拥有较高权限,建议您通过RAM用户进行API调用和日常运维。 您可以通过RAM控制台,单击RAM用户名称查看用户权限。请确保您所调用API的RAM用户已有Chat App 消息服务相关权限:
| |
AccessKey ID | 您可以登录RAM控制台,单击RAM用户名称查看AccessKey ID。 | |
AccessKey Secret | 创建后不支持二次查看。若本地无备份,建议重新创建一对AccessKey使用。 |
环境配置
本文以Java语言为例,进行后续操作。更多语言及其SDK安装方式,请参见安装与使用流程。
检查Java环境:您的Java版本需高于Java 8。Java环境配置的方法,请参见在Windows搭建Java开发环境。
安装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>配置环境变量:为避免在代码中显式地编码创建AccessKey(AccessKey)而造成泄露,建议您把AccessKey在Linux、macOS和Windows系统配置环境变量,通过环境变量进行读取。配置后请重启或刷新您的编译运行环境,包括IDE、命令行界面、其他桌面应用程序及后台服务,以确保最新的系统环境变量成功加载。
配置代理(可选):如果您需要通过代理服务器访问,可通过SDK进行配置,请参见代理配置。
API基本信息
Chat App 消息服务所提供的API基本信息参见如下:
接口版本 | |
RPC | |
(Endpoint) | 公网接入地址:cams.ap-southeast-1.aliyuncs.com |
API调用流程
创建通道:在界面创建通道。
通道即指您在使用Chat App消息服务时消息发送所使用的通道类型。支持WhatsApp、Messenger、Instagram、Email通道类型。
您需选择适合自己的通道类型,不同类型的通道只能发送各自类型的消息。
注册并绑定WABA:使用ChatappBindWaba接口绑定WABA。
在调用该接口前,您需已有注册的WABA账号,通过API的方式无法注册WABA账号,若您没有已注册的WABA账号,您可在Chat App 消息服务控制台通过嵌入式页面注册WABA。
WhatsApp Business Account(WABA)是指企业发送WhatsApp商业消息前需要注册的WhatsApp官方业务账户,用于发送商业消息。经过WhatsApp企业认证的WABA会获得认证标志,提高客户对企业信息的信任度,增强品牌形象,减少虚假信息的干扰。您可以通过Facebook官方嵌入式快速注册WABA。
新增号码:使用AddChatappPhoneNumber接口新增号码。新增的号码将用于发送WhatsApp消息。
通过同步号码,您可以将已绑定且通过审核的WABA下的号码与BM平台进行同步,使用ChatappSyncPhoneNumber接口同步号码信息。
号码迁移允许客户将在其他BSP已注册的电话号码通过号码迁移功能迁移至阿里云。迁移后的电话号码会保留原有显示名、质量评分、发消息限制、官方商业账号状态和之前已经过审的所有高质量消息模板。您可使用CreateChatappMigrationInitiate接口创建需要迁移的号码。
验证号码:使用GetChatappVerifyCode接口获取号码验证码、再使用ChatappVerifyAndRegistr接口验证号码、验证号码后,使用GetPhoneNumberVerificationStatus接口获取号码验证状态。
若您使用的是通过号码迁移来的号码,可通过GetMigrationVerifyCode接口获取迁移号码的验证码,再通过ChatappMigrationVerified接口校验迁移号码。
创建并设计模板:使用CreateChatappTemplate接口创建并设计模板。模板创建成功后,将自定进入审核流程,再通过GetChatappTemplateDetail接口查询模板审核详情。
模板进入审核流程后,您需后续持续关注模板审核状态。一般在五分钟之内完成审核,偶尔会出现审核超过24小时的情况。
WhatsApp消息模板在审核的过程中可能会出现类别自动变更的情况,您可在调用CreateChatappTemplate接口时,将CategoryChangePaused参数设置为true,具体详情请参见WhatsApp消息模板类别变更及发送控制设置。
发送Chat App消息:使用SendChatappMessage接口,或使用SendChatappMassMessage接口批量发送消息。
发送Chat App消息前请确保您账户余额充足。更多详情,请参见Chat App 消息服务定价。
查看Chat App消息发送详情:通过ChatAppStatus(轻量消息队列模式 | Http批量推送模式)回执消息接收ChatApp消息发送状态报告。
接收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://help.aliyun.com/document_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消息和签名示例代码。