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

求助:Node.js中Amazon Connect通话时发送数据的实现方法

解决Amazon Connect通话中发送数据的问题

获取当前活动通话连接

不管是发送DTMF按键还是自定义业务数据,核心前提是拿到有效的Connection实例,不要依赖全局变量,通过Streams API主动获取:

// 获取当前活跃通话Contact
const activeContact = connect.contactCenter.getContactManager().getActiveContact();
if (activeContact) {
  // 筛选出已建立的通话连接
  const connection = activeContact.getConnections().find(conn => conn.getStatus() === connect.ConnectionStatus.CONNECTED);
  if (connection) {
    // 在此执行发送操作
  }
}

注意:这段代码必须在onAccepted事件触发后执行,确保通话连接已经建立。

发送DTMF按键(对应你参考的sendDigits方法)

如果需求是发送DTMF信号,直接在已连接的Connection实例上调用sendDigits即可,不要搞错调用对象:

// 确保connection是已连接的有效实例
connection.sendDigits('1234');

常见踩坑点:提前调用(连接未建立时调用会失效)、获取到未连接的Connection实例。

发送自定义数据到Contact Flow

如果要传递业务自定义数据到Amazon Connect的Contact Flow,使用contact.setAttributes()方法,数据会同步到Contact属性中,可在Contact Flow里直接引用:

if (activeContact) {
  // 设置自定义属性
  activeContact.setAttributes({
    customOrderId: 'ORD-2024-001',
    userType: 'vip'
  });
  // 在Contact Flow中通过 ${Attributes.customOrderId} 即可读取该数据
}

React环境下的正确实现方式

不要用useSelector监听Connect状态,改用Streams自身的事件监听机制,确保库初始化完成后再执行逻辑:

useEffect(() => {
  // 先确认Connect Streams库已加载完成
  if (!window.connect) return;

  // 监听通话接通事件
  const handleContactAccepted = (contact) => {
    const connection = contact.getConnections().find(conn => conn.getStatus() === connect.ConnectionStatus.CONNECTED);
    if (connection) {
      // 示例:发送DTMF或自定义数据
      connection.sendDigits('9');
      contact.setAttributes({ sessionData: 'react-client-data' });
    }
  };

  // 注册事件监听
  connect.contactCenter.getContactManager().onContactAccepted(handleContactAccepted);

  // 组件卸载时清理监听
  return () => {
    connect.contactCenter.getContactManager().offContactAccepted(handleContactAccepted);
  };
}, []);

内容的提问来源于stack exchange,提问作者Anuj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:16:00