阿里云语音服务-交互式语音应答(ivrCall)、语音回执消息的结合使用

利用阿里云语音服务实现如下
业务场景:电话接听者在接听系统语音后,回复按键1,或者2。
系统接收这个结果(按键1:YES,2:NO),并根据这个结果做其他业务处理。
阿里云语音服务URL
https://www.aliyun.com/product/vms?spm=a2c4g.11186623.5.1.qH2gbz
https://help.aliyun.com/product/54853.html?spm=a2c4g.11186623.3.1.BXack6

一、注册阿里云账号、购买语音号码,申请AK、语音模板或上传语音文件。并下载demo、sdk.
具体步骤参照阿里云语音呢服务官网
二、根据demo编写业务处理代码
语音通知使用的是【交互式语音应答(ivrCall)】
demo:https://help.aliyun.com/document_detail/56962.html?spm=a2c4g.11186623.6.550.hnTQgC

重点是按键和播放对应提示音的Map关系

        List menuKeyMaps = new ArrayList();
        MenuKeyMap menuKeyMap1 = new MenuKeyMap();
        menuKeyMap1.setKey("1");
        menuKeyMap1.setCode("9a9d7222-670f-40b0-a3af.wav");
        menuKeyMaps.add(menuKeyMap1);
        MenuKeyMap menuKeyMap2 = new MenuKeyMap();
        menuKeyMap2.setKey("2");
        menuKeyMap2.setCode("44e3e577-3d3a-418f-932c.wav");
由于本业务主要关注按键key,所以MenuKeyMap的code值可以是随便上传的语音文件。


接收按键结果使用的是【语音回执消息】

消息类型为VoiceReport的【dtmf】可以获得DTMF按键的值。根据dtmf的值处理其他具体的业务。

demo:https://help.aliyun.com/document_detail/55464.html?spm=a2c4g.11186623.6.552.KEnHSG

Map contentMap=gson.fromJson(message.getMessageBodyAsString(), HashMap.class);
String dtmf=(String)contentMap.get("dtmf");
if ("1".equals(dtmf)) {
       System.out.println("11111");
}
if ("2".equals(dtmf)) {
       System.out.println("2222222);
}
三、调用语音服务
1、启动语音回执消息监听器。阿里云【语音回执消息】是个MessageListener,必须先启动。
2、调用交互式语音应答(ivrCall)。

至此,就可以利用阿里云语音服务完成本文开头提到的业务场景。

你可能感兴趣的:(经验,学习)