You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Copilot中的Bot Skill无法在全渠道在线聊天组件或SMS渠道接收事件活动

Azure Copilot中的Bot Skill无法在全渠道在线聊天组件或SMS渠道接收事件活动

我之前也碰到过类似ACS渠道下事件无法传递的问题,结合Azure Copilot和Omnichannel的工作机制,给你几个排查和解决的方向:

  • 补全事件活动的必填字段
    你当前的事件结构可能缺了Omnichannel/ACS渠道要求的关键信息,比如必须明确指定channelId,还要复用当前上下文里的会话ID和接收方信息,避免手动填错导致路由失败。调整后的事件结构可以参考:

    transfer_event_activity = {
        "type": "event",
        "name": "initiateHandoff",
        "from": {
            "id": "1234",
            "name": "me"
        },
        "channelId": "omnichannel",  # SMS渠道填"acssms"即可
        "conversation": {
            "id": turn_context.activity.conversation.id  # 直接用当前会话ID,不用手动输入
        },
        "recipient": turn_context.activity.recipient  # 确保接收方信息正确
    }
    
  • 检查技能和Copilot的事件路由权限

    • 先去Azure Bot Service的技能配置里,确认initiateHandoff这个事件名称已经被加入到技能和Copilot之间的允许传递列表中。如果没加,Copilot会自动过滤掉这个事件,而且不会有错误日志。
    • 另外,在Omnichannel的渠道集成设置里,找一找有没有“允许事件活动传递”的开关,有些版本默认是关闭的,只放行普通消息,得手动打开。
  • ACS渠道会话的特殊处理
    因为Omnichannel和SMS用的是ACS格式的会话ID,和DirectLine的格式差异很大,所以事件活动里必须额外带上channelData字段,把ACS的会话元数据传进去,Copilot才能正确识别会话来源。可以在事件里加上这段:

    transfer_event_activity["channelData"] = {
        "acsConversationId": turn_context.activity.conversation.id,
        "channelType": "chat"  # SMS渠道换成"sms"
    }
    
  • 确认Copilot主题的触发逻辑
    别忽略了最基础的检查:你的Copilot主题是不是真的监听了initiateHandoff事件?有些时候开发者会不小心把触发条件设成“收到特定文本”,而不是“收到事件活动”,这样哪怕事件传过去了也不会触发主题。去Copilot的主题编辑器里,把触发条件改成“当收到事件活动时”,然后指定事件名称为initiateHandoff。

  • 开详细日志找线索
    虽然你说没看到错误日志,但可以开启Azure Bot Service的详细诊断日志,重点看“通道日志”和“技能调用日志”。另外在Omnichannel的运营模块里,打开对应的会话详情,里面会记录所有进出的活动,包括被过滤掉的事件,说不定能找到事件丢失的原因。

备注:内容来源于stack exchange,提问作者Optimus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:14:35