话术挂断之后是否处理事件
# 问题场景
- 流程:自动外呼进入机器人话术。
- 问题:在机器人放音时用户挂断后,话术还会继续匹配流程,如果匹配上的是放音节点,还会进行放音,那么在数据库表
conversation
中就会多出一条放音记录。
出现这个问题是因为在cti.json文件中配置了event_after_hangup:ture
,该配置的作用:挂断之后是否继续处理事件,如果不开启,用户说话之后没等ASR识别完成就挂机,会丢失识别结果,开启后会有complete事件参数HANGUP(F说话内容);如果开启,在挂断之后会继续处理事件。
# 解决方案:
# 方案一
修改cti.json文件中的配置event_after_hangup
,将该参数的值修改成false
。用户挂断之后,就不会在进行匹配了,但是这种方案有个缺点:如果在用户说话之后还没等ASR识别完成就挂断,那么这个节点的asr识别结果会丢失。在数据库表conversation
中就没有记录。
在 CCAdmin-Web->CTI配置 页面中需要勾选配置event_after_hangup
。
# 方案二
话术中添加一个全局挂断流程,把进入这个流程的完成原因设置为HANGUP
。然后在主流程的每个节点去关联这个全局挂断流程。当用户在主流程的某一节点放音时挂断,那么此时的完成原因是HANGUP
,话术就会优先匹配这个全局挂断流程,然后执行到挂断节点进行挂断。这样就可以避免数据库表conversation
中多出一条放音记录。
如果没有添加一个全局挂断流程,当用户在主流程的某一节点放音时挂断,此时的完成原因HANGUP
会匹配到ANY
进入默认流程进行放音,那么数据库表conversation
中就多出一条放音记录。
上次更新: 2024/09/30, 14:19:53