Authentication, Conversation Creation, And Agent Join

Agent·Customer authenticate → OpenConversation → Conversation Spot created → agent join

Authentication, Conversation Creation, And Agent Join Agent·Customer authenticate → OpenConversation → Conversation Spot created → 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

Judging join completion

  • • scheduled=true means the join was scheduled, not that membership commit is complete. Agent join should only be judged complete once both clients confirm the Active ParticipantJoinedNotify.
  • • The ConversationId of JoinConversationReq is a required stream-metadata value and isn't put into the payload as a route. participantId, role, and displayName are values needed for the actor join.

Starting state and waiting

  • • The starting state is that Session, Api, and Support readiness is complete, and the Agent roster is either empty or has capacity.
  • • When no Agent is assignable, the Customer's OpenConversationReq isn't an error — it waits at WaitingForAgent.
  • • OpenConversationApiReq and ConversationCreateReq are server-to-server request/reply. The Framework-issued SpotId is used as the ConversationId, and the owner location and ActorRef aren't put into the response. The ActorId in ParticipantJoinedNotify and ConversationAssignedNotify is the agent's identity actor id.