<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Sending an ongoing customer message via Virtual Agent Bot Integration API after Live Agent handoff in Community Central forum</title>
    <link>https://www.servicenow.com/community/community-central-forum/sending-an-ongoing-customer-message-via-virtual-agent-bot/m-p/3584827#M7656</link>
    <description>&lt;P&gt;&lt;STRONG&gt;What we're building:&lt;/STRONG&gt; A custom web app that talks to Virtual Agent + Advanced Work Assignment to hand a chatbot conversation off to a live human agent in Agent Workspace, with two-way messaging after handoff. We're driving this entirely through sn_va_as_service's Bot Integration API (POST /api/sn_va_as_service/bot/integration), authenticated via Basic Auth + the integration token.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What works — conversation creation and handoff:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;START_CONVERSATION&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;creates the conversation. The synchronous HTTP response is just&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;{"status":"success"}&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— no session id in it. The real session id only arrives async, via the outbound webhook, in a body item shaped like:&lt;/LI&gt;&lt;/OL&gt;&lt;DIV class=""&gt;&lt;PRE&gt;{"actionType":"StartConversation","conversationId":"&amp;lt;real id&amp;gt;","uiType":"ActionMsg", ...}&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;We correlate that back to our original call via requestId.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Sending a follow-up message with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;action: "AGENT"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;message.text&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;set to the exact label of a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;TopicPickerControl&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;option the bot's opening response offers (in our case,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"Live Agent Support", which NLU-matches a topic named the same) correctly triggers the full handoff sequence — confirmed via the webhook pushes we receive in order:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SubscribeToSupportQueue&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;StartSpinner&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SwitchToLiveAgent&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SubscribeToChatPresence&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→ a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;System/ActionMsg&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;push with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"message":"Agent has joined."&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→ the agent's queue-configured auto-greeting. This part works reliably.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Where we're stuck — sending the customer's &lt;EM&gt;next&lt;/EM&gt; message once the agent is already live:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Every subsequent customer message needs to reach that same live agent in Agent Workspace. We've tried:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;action: "AGENT"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;again&lt;/STRONG&gt;, with the real message text, on the same&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;clientSessionId. Result: the webhook returns&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"score": 0,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"takeControl": true, and a bot-generated fallback response (e.g.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"I'm having technical issues and won't be able to continue this conversation."&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;or, on an earlier attempt,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"It seems you have left the conversation.") — never the human agent. Worse, the underlying&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;interaction&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;record transitions to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Closed Abandoned&lt;/STRONG&gt;, killing the live session outright rather than just failing to deliver that one message.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;action: "USER"&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;instead — silent no-op, no webhook activity at all, message never delivered anywhere.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;action: "AGENT"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;contextVariables&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;set (per the pattern shown for queue-targeted transfers in ServiceNow's own docs, e.g.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;{"b2b_category":"humanresource"}) — identical failure to the plain&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;AGENT&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;case above (score:0,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;takeControl:true,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Closed Abandoned). We also confirmed on the AWA Queue record itself (Work item routing condition&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;builder) that there's no field available to even receive an arbitrary&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;contextVariables&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;key — so this wasn't a queue-condition mismatch, it's that&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;AGENT&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;re-enters the bot/NLU pipeline regardless of what's attached to the call, once a live agent already owns the interaction.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;It looks like the Bot Integration API's AGENT (and USER) actions are fundamentally bot/NLU-conversation actions, with no "just relay this raw text to the human agent who already joined" mode — but we haven't found this stated anywhere in the docs, so we may be missing an action, a flag, or an entirely different endpoint meant for this exact purpose.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt; Is there a documented, supported way to send an ongoing customer message into an &lt;EM&gt;already-live&lt;/EM&gt; agent chat via the Virtual Agent / sn_va_as_service Bot Integration API (or any other supported API), without it re-entering the bot/NLU pipeline or risking the interaction being closed as abandoned?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 07 Aug 2026 13:00:20 GMT</pubDate>
    <dc:creator>PrifyP</dc:creator>
    <dc:date>2026-08-07T13:00:20Z</dc:date>
    <item>
      <title>Sending an ongoing customer message via Virtual Agent Bot Integration API after Live Agent handoff</title>
      <link>https://www.servicenow.com/community/community-central-forum/sending-an-ongoing-customer-message-via-virtual-agent-bot/m-p/3584827#M7656</link>
      <description>&lt;P&gt;&lt;STRONG&gt;What we're building:&lt;/STRONG&gt; A custom web app that talks to Virtual Agent + Advanced Work Assignment to hand a chatbot conversation off to a live human agent in Agent Workspace, with two-way messaging after handoff. We're driving this entirely through sn_va_as_service's Bot Integration API (POST /api/sn_va_as_service/bot/integration), authenticated via Basic Auth + the integration token.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What works — conversation creation and handoff:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;START_CONVERSATION&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;creates the conversation. The synchronous HTTP response is just&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;{"status":"success"}&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— no session id in it. The real session id only arrives async, via the outbound webhook, in a body item shaped like:&lt;/LI&gt;&lt;/OL&gt;&lt;DIV class=""&gt;&lt;PRE&gt;{"actionType":"StartConversation","conversationId":"&amp;lt;real id&amp;gt;","uiType":"ActionMsg", ...}&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;We correlate that back to our original call via requestId.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Sending a follow-up message with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;action: "AGENT"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;message.text&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;set to the exact label of a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;TopicPickerControl&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;option the bot's opening response offers (in our case,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"Live Agent Support", which NLU-matches a topic named the same) correctly triggers the full handoff sequence — confirmed via the webhook pushes we receive in order:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SubscribeToSupportQueue&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;StartSpinner&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SwitchToLiveAgent&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SubscribeToChatPresence&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→ a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;System/ActionMsg&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;push with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"message":"Agent has joined."&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;→ the agent's queue-configured auto-greeting. This part works reliably.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Where we're stuck — sending the customer's &lt;EM&gt;next&lt;/EM&gt; message once the agent is already live:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Every subsequent customer message needs to reach that same live agent in Agent Workspace. We've tried:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;action: "AGENT"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;again&lt;/STRONG&gt;, with the real message text, on the same&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;clientSessionId. Result: the webhook returns&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"score": 0,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"takeControl": true, and a bot-generated fallback response (e.g.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"I'm having technical issues and won't be able to continue this conversation."&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;or, on an earlier attempt,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"It seems you have left the conversation.") — never the human agent. Worse, the underlying&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;interaction&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;record transitions to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Closed Abandoned&lt;/STRONG&gt;, killing the live session outright rather than just failing to deliver that one message.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;action: "USER"&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;instead — silent no-op, no webhook activity at all, message never delivered anywhere.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;action: "AGENT"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;contextVariables&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;set (per the pattern shown for queue-targeted transfers in ServiceNow's own docs, e.g.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;{"b2b_category":"humanresource"}) — identical failure to the plain&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;AGENT&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;case above (score:0,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;takeControl:true,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Closed Abandoned). We also confirmed on the AWA Queue record itself (Work item routing condition&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;builder) that there's no field available to even receive an arbitrary&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;contextVariables&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;key — so this wasn't a queue-condition mismatch, it's that&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;AGENT&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;re-enters the bot/NLU pipeline regardless of what's attached to the call, once a live agent already owns the interaction.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;It looks like the Bot Integration API's AGENT (and USER) actions are fundamentally bot/NLU-conversation actions, with no "just relay this raw text to the human agent who already joined" mode — but we haven't found this stated anywhere in the docs, so we may be missing an action, a flag, or an entirely different endpoint meant for this exact purpose.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt; Is there a documented, supported way to send an ongoing customer message into an &lt;EM&gt;already-live&lt;/EM&gt; agent chat via the Virtual Agent / sn_va_as_service Bot Integration API (or any other supported API), without it re-entering the bot/NLU pipeline or risking the interaction being closed as abandoned?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 07 Aug 2026 13:00:20 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/sending-an-ongoing-customer-message-via-virtual-agent-bot/m-p/3584827#M7656</guid>
      <dc:creator>PrifyP</dc:creator>
      <dc:date>2026-08-07T13:00:20Z</dc:date>
    </item>
    <item>
      <title>Re: Sending an ongoing customer message via Virtual Agent Bot Integration API after Live Agent hando</title>
      <link>https://www.servicenow.com/community/community-central-forum/sending-an-ongoing-customer-message-via-virtual-agent-bot/m-p/3584848#M7657</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/119101"&gt;@Victor Chen&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;As I could see some documentation around Virtual Agent API that you have added, thought of tagging you here in case you have suggestions or can point me to someone who can answer this&lt;/P&gt;</description>
      <pubDate>Fri, 07 Aug 2026 14:49:06 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/sending-an-ongoing-customer-message-via-virtual-agent-bot/m-p/3584848#M7657</guid>
      <dc:creator>PrifyP</dc:creator>
      <dc:date>2026-08-07T14:49:06Z</dc:date>
    </item>
  </channel>
</rss>

