invokeAction没有触发Twilio.FlexWebChat.Actions.on动作 &g



我正在使用ToggleChatVisibility编程地打开我的聊天窗口,它工作得很好,但它不会触发相关的FlexWebChat。行动

<script>
const operatingHoursCheckMsg = async function () {
Twilio.FlexWebChat.Actions.on("afterToggleChatVisibility", (payload) => {
console.log('Not Working');
});
}       
await initateWebChat.init();
}
function Test() {
operatingHoursCheckMsg();   
Twilio.FlexWebChat.Actions.invokeAction("ToggleChatVisibility");    
}
</script>
<button type="button" onclick="Test()">Click to open and close chat window</button>

如果我使用聊天框ui关闭并重新打开聊天,则afterToggleChatVisibility事件会触发,但如果我单击我的按钮则不会触发。

如何正确触发此事件?

我认为你有一个竞态条件导致这个问题。您将operatingHoursCheckMsg函数定义为async,即使没有涉及异步调用(尽管可能在您的完整脚本中有),但在您的Test函数中,您在调用动作之前不会等待承诺解决。我认为这意味着JavaScript将承诺放在一个队列上,由事件循环异步处理,然后运行下一行同步代码。因此,您可以在注册事件侦听器之前调用该操作。

看起来好像您想使用该按钮继续切换聊天打开和关闭,所以您可能不应该每次单击该按钮都附加一个新的侦听器。

我建议你在开始网络聊天后设置一个监听器,像这样:

<script>
const operatingHoursCheckMsg = async function () {
// Do operating hours check
}       
await initateWebChat.init();
Twilio.FlexWebChat.Actions.on("afterToggleChatVisibility", (payload) => {
console.log('Chat toggled!');
});
}
async function Test() {
await operatingHoursCheckMsg();   
Twilio.FlexWebChat.Actions.invokeAction("ToggleChatVisibility");    
}
</script>
<button type="button" onclick="Test()">Click to open and close chat window</button>

相关内容

  • 没有找到相关文章

最新更新