라이브킷 Agent에서 아웃바운드 전화통화시 대상자가 전화를 수신했는지의 여부를 파악할수 ...
# ask-ai
l
라이브킷 Agent에서 아웃바운드 전화통화시 대상자가 전화를 수신했는지의 여부를 파악할수 있는 방법이 있어?
t
Thanks for reaching out, Dan(송희웅). I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
라이브킷에서 아웃바운드 전화 통화 시 대상자가 전화를 수신했는지 확인하는 방법은 두 가지가 있어요: 1. 실시간으로
sip.callStatus
속성 모니터링:
`create_sip_participant`를 통해 전화를 시작한 후, SIP 참가자의
sip.callStatus
속성을 확인해서 상태가 `"active"`로 바뀌었는지 확인할 수 있습니다. 이 상태는 대상자가 전화를 받았다는 뜻이에요. 2.
wait_until_answered
매개변수 사용:
`CreateSIPParticipantRequest`에서 `wait_until_answered=True`로 설정하면, 대상자가 전화를 받을 때까지 함수 실행이 멈춥니다. 이 방법은 대상자가 전화를 받을 때만 작업을 진행해야 하는 에이전트 워크플로우에 특히 유용하답니다. 또한, UI/UX 용도로 콜 상태 이벤트를 받아 실시간 상태를 표시할 수도 있어요. 더 자세한 구현 방법이나 도움이 필요하시면 언제든지 말씀해 주세요! 함께 해결해 나가요.
l
2번 방법으로 통화수신여부를 파악할때 어디에서 어떻게 전화를 수신했는지 체크하면되?
t
2번 방법(
wait_until_answered
)을 사용할 때, 통화 수신 여부와 관련된 세부 정보는 SIP 참가자의 속성에서 확인할 수 있어요. 통화가 연결되면 다음과 같은 정보를 확인할 수 있답니다: • 전화번호:
sip.phoneNumber
속성을 통해 수신된 전화번호를 확인할 수 있어요. • 트렁크 ID:
sip.trunkID
속성을 통해 어떤 SIP 트렁크를 통해 연결되었는지 알 수 있습니다. • 통화 ID:
sip.callID
속성을 통해 특정 통화의 고유 ID를 확인할 수 있답니다. 이 정보는
participant.attributes
필드에서 제공되며, 통화가 성공적으로 연결된 후 이를 활용해 통화 수신 위치와 방법을 파악할 수 있어요. 혹시 추가적인 구현 방법이 필요하시거나 궁금한 점 있으시면 언제든지 말씀해 주세요!
l
async def on_enter(self): print("####### on_enter #######") logger.debug("on_enter") self.call_session_data.call_answered = True 위와같이 Agent에
on_enter
에서 콜에 대해 사용자가 수신했다고 판단해도 될까?
t
현재
on_enter
메서드에서 콜 수신 여부를 판단하려고 하시는 것 같아요. 다만, `on_enter`는 에이전트가 세션에서 활성화될 때 호출되는 메서드라 SIP 콜 이벤트와의 동기화가 필요할 수도 있답니다. 혹시 SIP 콜 이벤트와 에이전트 활성화 시점을 어떻게 동기화하려고 하시는지, 또는 콜 상태를 확인하기 위해
sip.callStatus
속성을 사용하실 계획이 있으신지 알려주시면 더 도움을 드리기 쉬울 것 같아요. 언제든 편하게 말씀해 주세요!