语音通知实现告警功能

本文以语音通知服务功能为例,为您介绍如何通过语音通知的功能,实现自身的系统、设备、服务器等相关的告警功能。

适用场景

  • 适用于科技公司的各种语音告警需求。

  • 当您的系统检测到服务器出现异常,或者物联网等设备出现异常时,可以通过语音通知功能,以语音电话的形式,给告警处理人拨打电话,电话将播报您预先申请的语音通知模板中的内容,在语音通知模板中,您也可以添加变量,从而在实际使用时替换为符合情况的实际告警内容。

前提条件

操作步骤

申请

  1. 申请资质:您可以在语音服务控制台上申请资质,具体的操作方式,请参考企业资质申请手册

  2. 申请话术:您可以在语音服务控制台上申请话术,具体的操作方式,请参考新增话术

    • 若您属于公共模式,则请在业务模式选择时,选择公共模式。

    • 若您属于专属模式,则请在业务模式选择时,选择专属模式。

  3. 申请号码:如果您有单独购买号码的需求,可以在语音服务控制台上申请号码。在申请号码前,请您先通过询单的形式,先确认当前是否存在您意向中的号码资源。

    说明

    公共模式不需要申请号码。

  4. 申请模板:在模板申请前,请务必阅读语音模板规范。示例如下,仅供参考:

    • 您好,服务器节点${content}发生告警,请及时处理。

    • 服务器告警,${msg}异常,请及时处理。

      重要
      • 告警时,请不要填写IP或者链接等内容,如果有IP地址的相关诉求,可以考虑将IP中的“.”替换“_”的形式,例如:127_0_0_1。

      • 模板的审核时效在2个小时以内。在申请公共模式的模板前,请务必确认已存在申请通过的公共模式的资质和话术信息。

发起呼叫

  1. 您可以使用API调用SingleCallByTts,详情请参考文档SingleCallByTts

说明

在实际编写程序时,推荐使用最新版本的SDK。

  1. 您也可以通过API在线调试工具填写如下参数进行测试。API在线调试工具将自动为您生成示例代码:image

    说明
    • 在CalledShowNumber中,如果是公共模式,则不需要填写;如果是专属模式,则需要填入自行购买的号码。

    • 在CalledNumber中填写被呼叫的手机号码。

    • 在TtsCode中填入申请通过的语音模板ID,格式为TTS_XXXXXXXX。

    • 在TtsParam中填写模板中的参数与对应的值信息。

      • 如果仅有1个变量,如变量为content,则填写{"content":"abc"}

      • 如果有多个变量,如变量为time、content,则填写{"time":"2012-12-12","content":"abc"}

    • 在OutId中可以填入自定义的ID,用于自己标识一通呼叫。

  2. 调用成功后,系统会返回一个CallId,建议将CallId信息记录,便于后续的呼叫结果查询或者接收呼叫的回执后进行业务逻辑处理。

查询呼叫记录

通过控制台查询

  1. 登录语音服务控制台

  2. 单击业务统计 > 语音记录查询,进入查询页面。您可以根据呼叫类型、呼叫时间、主叫号码、被叫号码进行查询。image

通过API查询

  • 主动获取呼叫结果:通过 QueryCallDetailByCallId 接口,您就可以主动获取到一通呼叫的呼叫结果。

    在调用API时,请输入呼叫时返回的CallId值进行查询。image

    说明

    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(推荐):开通两个阿里云账号,分别对应测试账号和生产账号。同时保证了测试环境和生产环境的账号隔离。