Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Insert excerpt
_ExcerptVirtualAssistant
_ExcerptVirtualAssistant
nopaneltrue

...

  1. Get an API key for Vonage AI API. Ask Vonage to store this key in a custom configuration value for your account. For information about getting an API key for Vonage AI API, see Vonage AI Studio authentication.
  2. Create a virtual agent and configure the agent's conversation. Save the agent's ID and virtual number to use later. For information about creating a virtual agent, see Create a new Vonage AI Studio agent.
  3. Make a note of response parameters that your virtual agent can return. For information about response parameters, see Vonage AI Studio parameters.

The following visualization shows an interaction plan that routes interactions to a virtual agent, and collects data about the interaction:

...

Store the session_id and session_start_time from the response in SessionId and SessionStartTime data sources respectively. Subsequent applets require these values.Create virtual agent sessionImage Removed

Code Block
languagexml
titleInteraction Definition
collapsetrue
<ApiInteraction>
  <Request>
    <Url>https://stairway.ai.vonage.com/flow/init</Url>
    <Method>POST</Method>
    <Headers>
      <Header>
        <Key>X-Vgai-Key</Key>
        <Value>#(api_key)</Value>
      </Header>
    </Headers>
    <Body><![CDATA[
{
  "agent_id": "65d9634bf3a2412eb16e7adf"
}      
    ]]></Body>
  </Request>
  <Response>
    <Type>JSON</Type>
    <ResponseCodeDestination>CreateSessionResponseCode</ResponseCodeDestination>
    <Fields>
      <Field>
        <Locator>session_id</Locator>
        <Destination>SessionId</Destination>
        <DataType>string</DataType>
      </Field>
      <Field>
        <Locator>session_start_time</Locator>
        <Destination>SessionStartTime</Destination>
        <DataType>string</DataType>
      </Field>
    </Fields>
  </Response>
</ApiInteraction>

...

Use the next Data Connector applet (Extract specific virtual agent data) to get values from required parameters in params_list.

Collect virtual agent session dataImage Removed

Code Block
languagexml
titleInteraction Definition
collapsetrue
<ApiInteraction>
  <Request>
    <Url>https://stairway.ai.vonage.com/insights/sessions/$(session id)?session_start_time=$(session start time)</Url>
    <Method>GET</Method>
    <Headers>
      <Header>
        <Key>X-Vgai-Key</Key>
        <Value>#(api_key)</Value>
      </Header>
    </Headers>
  </Request>
  <Response>
    <Type>JSON</Type>
    <ResponseCodeDestination>Session</ResponseCodeDestination>
		<Fields>
  		<Field>
    		<Locator>params_list</Locator>
    		<Destination>params_list</Destination>
    		<DataType>string</DataType>
  		</Field>
    </Fields>
  </Response>
</ApiInteraction>

...

<Field>
   <Locator>result.PizzaType</Locator>
   <Destination>PizzaTypeValue</Destination>
   <DataType>String</DataType>
</Field>

...

Code Block
languagexml
titleInteraction Definition
collapsetrue
<ApiInteraction>
     <Request>
       <Url>$(JavascriptEngineUrl)</Url>
       <Method>POST</Method>
       <Body><![CDATA[{"script": "function findValueWithName(p, name){ for(var i=0;i<p.length;++i){if(p[i].name==name){return p[i].value;}}return '';} var params_list=$(params_list:EscapeDoubleQuotes); result={'Drink':findValueWithName(params_list,'Drink'), 'PizzaType':findValueWithName(params_list,'PizzaType'), 'PizzaSize':findValueWithName(params_list,'PizzaSize')};"}]]></Body>
       <Headers>
        <Header>
        <Key>Content-Type</Key>
        <Value>application/json</Value>
        </Header>
      </Headers>
     </Request>
     <Response>
       <Type>JSON</Type>
       <ResponseCodeDestination>ResponseCode</ResponseCodeDestination>
       <Fields>
         <Field>
           <Locator>result.Drink</Locator>
           <Destination>DrinkValue</Destination>
           <DataType>String</DataType>
         </Field>
         <Field>
           <Locator>result.PizzaType</Locator>
           <Destination>PizzaTypeValue</Destination>
           <DataType>String</DataType>
         </Field>
         <Field>
           <Locator>result.PizzaSize</Locator>
           <Destination>PizzaSizeValue</Destination>
           <DataType>String</DataType>
         </Field>
       </Fields>
     </Response>
</ApiInteraction>

...