如何在 Amazon Connect 上获取已拨电话的状态?

How to get status of placed call on Amazon Connect?

我正在编写一个通过 Amazon Connect 发送自动呼叫的应用程序。如果第一个号码无法接听,应用程序需要重试另一个目的地号码。该应用程序正在 Python3 中编写,并将在 Lambda 中托管。

这是正在使用的资源 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/connect.html#Connect.Client.get_contact_attributes https://docs.aws.amazon.com/connect/latest/APIReference/API_GetContactAttributes.html

问题是 "send call" 是异步启动的,因此无法立即清楚调用是否成功。为了检查呼叫,我调用 "get_contact_attributes" 来识别状态或任何可能指向所拨呼叫状态的属性。

response=client.start_outbound_voice_contact(
    ContactFlowId='XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
    DestinationPhoneNumber=event["DestinationPhoneNumber"],
    SourcePhoneNumber=event["OriginationPhoneNumber"],
    InstanceId="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
    Attributes={
        "message":f'{event["message"]}'
    }
)
contactid=response["ContactId"]

attr = client.get_contact_attributes(
    InstanceId='YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY',
    InitialContactId=contactid
)

我希望它是 return "connected_at" 或类似的东西,我可以用它来识别调用的结果,但是,它只有 returns "custom" 属性自己设置的。

这是我找到的解决方案:

1) 在联系流中,我添加了 "Set Attribute" 节点,其中我在开始后立即设置了 "status=1"。基本上,如果呼叫进入联系流程(即接听电话),它会被标记为成功完成

Set Contact Sttributes

2) 在我的 Python 代码 (lambda) 中,我检查状态是否显示,如果在这么多秒内没有显示,我取消呼叫并尝试另一个号码:

attr = client.get_contact_attributes(
    InstanceId=instanceid,
    InitialContactId=contactid
)

stop_call=client.stop_contact(
    ContactId=contactid,
    InstanceId=instanceid
)