本文以语音通知服务功能为例,为您介绍如何通过语音通知的功能,实现自身的系统、设备、服务器等相关的告警功能。
适用场景
适用于科技公司的各种语音告警需求。
当您的系统检测到服务器出现异常,或者物联网等设备出现异常时,可以通过语音通知功能,以语音电话的形式,给告警处理人拨打电话,电话将播报您预先申请的语音通知模板中的内容,在语音通知模板中,您也可以添加变量,从而在实际使用时替换为符合情况的实际告警内容。
前提条件
您需要首先开通语音服务。开通后,系统将会自动为您开通语音通知功能,您可以在语音服务控制台的通用设置中查看自己的功能开通情况。
选择告警号码模式,公共模式与专属模式的区别,请参见公共模式/专属模式FAQ和国内语音服务定价。
操作步骤
申请
申请话术:您可以在语音服务控制台上申请话术,具体的操作方式,请参考新增话术。
若您属于公共模式,则请在业务模式选择时,选择公共模式。
若您属于专属模式,则请在业务模式选择时,选择专属模式。
申请号码:如果您有单独购买号码的需求,可以在语音服务控制台上申请号码。在申请号码前,请您先通过询单的形式,先确认当前是否存在您意向中的号码资源。
说明公共模式不需要申请号码。
申请模板:在模板申请前,请务必阅读语音模板规范。示例如下,仅供参考:
您好,服务器节点${content}发生告警,请及时处理。
服务器告警,${msg}异常,请及时处理。
重要告警时,请不要填写IP或者链接等内容,如果有IP地址的相关诉求,可以考虑将IP中的“.”替换“_”的形式,例如:127_0_0_1。
模板的审核时效在2个小时以内。在申请公共模式的模板前,请务必确认已存在申请通过的公共模式的资质和话术信息。
发起呼叫
您可以使用API调用SingleCallByTts,详情请参考文档SingleCallByTts。
在实际编写程序时,推荐使用最新版本的SDK。
您也可以通过API在线调试工具填写如下参数进行测试。API在线调试工具将自动为您生成示例代码:
说明在CalledShowNumber中,如果是公共模式,则不需要填写;如果是专属模式,则需要填入自行购买的号码。
在CalledNumber中填写被呼叫的手机号码。
在TtsCode中填入申请通过的语音模板ID,格式为TTS_XXXXXXXX。
在TtsParam中填写模板中的参数与对应的值信息。
如果仅有1个变量,如变量为content,则填写{"content":"abc"}
如果有多个变量,如变量为time、content,则填写{"time":"2012-12-12","content":"abc"}
在OutId中可以填入自定义的ID,用于自己标识一通呼叫。
调用成功后,系统会返回一个CallId,建议将CallId信息记录,便于后续的呼叫结果查询或者接收呼叫的回执后进行业务逻辑处理。
查询呼叫记录
通过控制台查询
登录语音服务控制台。
单击业务统计 > 语音记录查询,进入查询页面。您可以根据呼叫类型、呼叫时间、主叫号码、被叫号码进行查询。
通过API查询
主动获取呼叫结果:通过 QueryCallDetailByCallId 接口,您就可以主动获取到一通呼叫的呼叫结果。
在调用API时,请输入呼叫时返回的CallId值进行查询。
说明CallId为呼叫时返回的CallId,ProdId为语音通知的ProdId,QueryDate查询指定时间点对应的24小时的记录。例如您输入2022.11.21 20:00:01,系统会查询2022.11.21 20:00:01~2022.11.22 20:00:01时间段内指定CallId的呼叫记录。
被动接收呼叫结果:在实际生产系统中,如果通过轮询的方式主动查询呼叫结果,其实并不是一个很好的选择,因为这会产生很多不必要的系统请求。因此语音服务还可以通过消息回执的形式,为您主动推送呼叫结果。
说明需要注意的是,HTTP和MNS消息之间不冲突,可以同时开启,且两者的消息消费不冲突。消息一旦消费成功后,便无法在其他服务器上消费到该消息,多次消费失败后,也不会再推送消息。具体请参见回执消息简介与配置流程。
如果您有不同环境的监听需求,可以参考以下方案:
方案1:在自身系统消费消息时,设置不同环境的消费方式。如测试环境使用HTTP回执,生产环境使用MNS回执。在消费时,对当前环境的消息进行过滤。
方案2(推荐):开通两个阿里云账号,分别对应测试账号和生产账号。同时保证了测试环境和生产环境的账号隔离。