인증, 상담 생성과 agent join

Agent·Customer 인증 → OpenConversation → Conversation Spot 생성 → agent join

인증, 상담 생성과 agent join Agent·Customer 인증 → OpenConversation → Conversation Spot 생성 → agent join AuthenticateReq AuthenticateUserReq AuthenticateUserRes AuthenticateRes SetAgentAvailableReq(true) SetAgentAvailableRes(true) AuthenticateReq AuthenticateUserReq AuthenticateUserRes AuthenticateRes OpenConversationReq(subject) OpenConversationApiReq ConversationCreateReq ConversationCreateRes OpenConversationApiRes OpenConversationRes ConversationAssignedNotify ConversationAssignedNotify JoinConversationReq(metadata ConversationId) JoinConversationReq JoinConversationRes(scheduled=true) JoinConversationRes(scheduled=true) ParticipantJoinedNotify(Active) ParticipantJoinedNotify(Active) ParticipantJoinedNotify(Active) Customer Client · Sequence participant Customer Client Agent Client · Sequence participant Agent Client Session · Sequence participant Session Api · Sequence participant Api ConversationSpot · Sequence participant ConversationSpot

join 완료 판정

  • • scheduled=true는 join 예약을 의미하며 membership commit 완료가 아니다. 양쪽 client가 Active 상태의 ParticipantJoinedNotify를 확인해야 agent join을 완료로 판정한다.
  • • JoinConversationReq의 ConversationId는 stream metadata 필수 값이며 payload에 route를 넣지 않는다. participantId·role·displayName은 actor join에 필요한 값이다.

시작 상태와 대기

  • • 시작 상태는 Session·Api·Support readiness가 완료되고 Agent roster가 비어 있거나 capacity를 가진 상태다.
  • • 배정 가능한 Agent가 없으면 Customer의 OpenConversationReq는 오류가 아니라 WaitingForAgent 상태에서 대기한다.
  • • OpenConversationApiReq와 ConversationCreateReq는 server 간 request/reply다. Framework가 발급한 SpotId를 ConversationId로 사용하며 owner 위치·ActorRef는 response에 넣지 않는다. ParticipantJoinedNotify·ConversationAssignedNotify의 ActorId는 상담원 identity actor id다.