使用AWS Connect describeContact API无法获取完整联系人详情,求替代API
问题:AWS Connect获取指定ContactId的完整联系人详情
我正尝试通过AWS SDK(Amazon Connect)获取指定ContactId的完整联系人详情,目前用的describeContact API返回的信息不全,想知道有没有其他可用的API?
当前使用的JavaScript代码如下:
AWS.config.update({ region: region, accessKeyId: accessKeyId, secretAccessKey: secretAccessKey }); const connect = new AWS.Connect(); const params = { InstanceId: InstanceId, ContactId: ContactId }; const getContactSearchHistory = async () => { try { const response = await connect.describeContact(params).promise(); } }
我原本期望获取Contact ID、Channel、发起时间戳、系统手机号、队列、坐席、客户手机号、挂断时间戳、通话时长等完整信息,但当前API仅返回以下内容:
{ "Contact" : { "Arn" : "**", "Id" : "***", "InitiationMethod" : "OUTBOUND", "Channel" : "VOICE", "AgentInfo" : { "Id" : "**", "ConnectedToAgentTimestamp" : "***" }, "InitiationTimestamp" : "**", "DisconnectTimestamp" : "**", "LastUpdateTimestamp" : "**" } }
解决方案
1. 使用searchContacts API
这个API支持自定义返回字段,能拿到你需要的队列、客户手机号、系统手机号等信息。你可以通过指定ContactId作为筛选条件,同时在Fields参数里列出需要的字段。示例代码:
const getFullContactDetails = async () => { try { const params = { InstanceId: InstanceId, SearchCriteria: { ContactId: { Equals: ContactId } }, Fields: [ "ContactId", "Channel", "InitiationTimestamp", "DisconnectTimestamp", "CustomerPhoneNumber", "SystemPhoneNumber", "Queue.Name", "Agent.Id", "Agent.ConnectedToAgentTimestamp" ] }; const response = await connect.searchContacts(params).promise(); // 处理返回的完整联系人数据 console.log(response.Contacts); } catch (error) { console.error(error); } };
2. 结合getContactAttributes API
如果还需要自定义属性或者更多元数据,可以用这个接口补充describeContact的结果:
const getContactExtraAttributes = async () => { try { const params = { InstanceId: InstanceId, ContactId: ContactId }; const response = await connect.getContactAttributes(params).promise(); // 这里包含自定义属性等额外信息 console.log(response.Attributes); } catch (error) { console.error(error); } };
3. 计算通话时长
通话时长不需要API返回,你可以用返回的DisconnectTimestamp减去InitiationTimestamp得到,比如:
const calculateDuration = (initTime, disconnectTime) => { const init = new Date(initTime); const disconnect = new Date(disconnectTime); return (disconnect - init) / 1000; // 转换为秒 };
补充说明
describeContact本身只返回最基础的核心联系人信息,更详细的字段需要通过searchContacts来获取,它支持更灵活的查询和字段筛选,能覆盖你提到的大部分需求。如果有自定义属性,再配合getContactAttributes即可。
内容的提问来源于stack exchange,提问作者Nikhil Sachan
相关产品推荐
相关产品推荐

