|
@@ -73,7 +73,7 @@ class MyAudioMediaPort(pj.AudioMediaPort):
|
|
|
|
|
|
try:
|
|
|
asr_text = self.get_asr_text()
|
|
|
- play_complete = self.is_play_complete()
|
|
|
+ play_complete = self.call.is_play_complete()
|
|
|
if asr_text and not play_complete:
|
|
|
self.user_asr_texts.append(asr_text)
|
|
|
if asr_text and play_complete:
|
|
@@ -109,10 +109,10 @@ class MyAudioMediaPort(pj.AudioMediaPort):
|
|
|
except:
|
|
|
pass
|
|
|
|
|
|
- def is_play_complete(self):
|
|
|
- if self.call.cur_player_file:
|
|
|
- player_id = murmur3_32(self.call.cur_player_file)
|
|
|
- return self.call.player_complete_dict.get(player_id)
|
|
|
+ # def is_play_complete(self):
|
|
|
+ # if self.call.cur_player_file:
|
|
|
+ # player_id = murmur3_32(self.call.cur_player_file)
|
|
|
+ # return self.call.player_complete_dict.get(player_id)
|
|
|
|
|
|
def get_asr_text(self):
|
|
|
try:
|
|
@@ -226,8 +226,13 @@ class MyCall(pj.Call):
|
|
|
self.asr = TestSt(call_id, message_receiver=self.on_receiver_asr_result) # 创建ASR实例
|
|
|
self.asr.start() # 启动ASR线程
|
|
|
|
|
|
-
|
|
|
+ def is_play_complete(self): #语音机器人是否播放结束
|
|
|
+ if self.cur_player_file:
|
|
|
+ player_id = murmur3_32(self.cur_player_file)
|
|
|
+ return self.player_complete_dict.get(player_id)
|
|
|
def onDtmfDigit(self, prm):
|
|
|
+ if not self.is_play_complete(): # 判断是否播放完成 否则不记录用户说的内容
|
|
|
+ return
|
|
|
digit = prm.digit
|
|
|
# 假设为超长类型按键 把用户输入的按键进行拼接 如果为# 则把用户输入所有按键放入队列并发送文本机器人
|
|
|
# 如果为非正常按键服务 输入以后直接发送文本机器人
|
|
@@ -295,6 +300,9 @@ class MyCall(pj.Call):
|
|
|
self.player.startTransmit(self.aud_med)
|
|
|
|
|
|
def on_receiver_asr_result(self, message, *args):
|
|
|
+ if not self.is_play_complete(): # 判断是否播放完成 否则不记录用户说的内容
|
|
|
+ return
|
|
|
+
|
|
|
print('asr返回内容:',message)
|
|
|
message = json.loads(message)
|
|
|
if message["header"]["status"] == 20000000:
|