我正在编写一个通过Amazon Connect发送自动呼叫的应用程序。如果第一个目标号码无法取回,应用需要重试到另一个目标号码。该应用程序是用Python3编写的,并将托管在Lambda中。
这是使用的资源https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/connect.html#Connect.Client.get_contact_attributeshttps://docs.aws.amazon.com/connect/latest/APIReference/API_GetContactAttributes.html
问题是"发送呼叫"是异步启动的,因此无法立即确定调用是否成功。为了检查呼叫,我调用"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
)
我希望它返回"connected_at"或类似的东西,我可以用来识别调用的结果,但是,它只返回我自己设置的"自定义"属性。
找到的解决方案:
1)在联络流中,我添加了"设置属性"节点,在启动后立即设置了"status=1"。基本上,如果呼叫进入联络流(即呼叫已接听),则会将其标记为成功完成
设置联系人地址
2)在我的Python代码(lambda)中,我检查状态是否显示,如果在几秒钟内没有显示,我取消呼叫并尝试另一个号码:
attr = client.get_contact_attributes(
InstanceId=instanceid,
InitialContactId=contactid
)
stop_call=client.stop_contact(
ContactId=contactid,
InstanceId=instanceid
)