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(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.
  • • JoinConversationReq is a Session binding packet without an Actor slot and sends conversationId in its payload. JoinConversationRes.actorId identifies the Actor handle for that room. 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.