Desenvolver um componente para Virtual Agent
Crie um componente Virtual Agent personalizado para coletar informações de entrada ou exibir na interface do cliente Virtual Agent.
Tipos de Virtual Agent componentes
Para desenvolver um componente para Virtual Agent, adicione propriedades e ações específicas para interagir com a interface do cliente Virtual Agent. As propriedades necessárias dependem do tipo de componente que você está criando.
- Componente de resposta
-
Um componente de resposta fornece apenas informações ao usuário e não coleta entrada ou lida com a interação do usuário. Por exemplo, um controle de cartão que não requer entrada do usuário e está na conversa apenas uma vez.
Adicione uma propriedade ao seu componente de resposta para lidar com os dados enviados pelo servidor Virtual Agent.
Tabela 1. Propriedades do componente de saída Propriedade Descrição dadosdecontrole Dados iniciais que o servidor Virtual Agent envia para o seu componente conforme o tópico é executado. Tipo de dados: objeto JSON
- Componente de entrada
-
Um componente de entrada exibe informações e/ou coleta entradas do usuário. Ele inclui a mesma propriedade que o componente de saída para lidar com os dados enviados pelo servidor, mas tem mais estados possíveis e requer interação do usuário.
Tabela 2. Propriedades do componente de entrada Propriedade Descrição dadosdecontrole Dados iniciais que o servidor Virtual Agent envia para o seu componente conforme o tópico é executado. Tipo de dados: objeto JSON
responseValue Dados enviados para o componente a partir da resposta do usuário, diretamente do cliente ou do servidor, se houver uma atualização. Use somente em componentes que exigem entrada do usuário. Tipo de dados: objeto JSON
forceCloseControl Sinalizador que indica se o componente pode aceitar entrada. Quando verdadeiro, o controle é fechado e o usuário não pode interagir com ele. Monitore as mudanças no cliente para atualizar este valor. Use somente em componentes que exigem entrada do usuário. Tipo de dados: booliano
Use esta ação para emitir dados da interação do usuário.
Tabela 3. Ações do componente de entrada Ação Descrição VA_CONTROL#VALOR_ENVIADO Dados de resposta do cliente a serem enviados para o servidor. Use somente em componentes que exigem entrada do usuário. Tipo de dados: objeto JSON
Estados do componente de entrada
Como eles aceitam dados, os componentes de entrada devem lidar com vários estados. O fluxo de estado geralmente é o seguinte:
- Virtual Agent mostra o componente personalizado no estado aguardando entrada.
- O usuário interage com o componente para fornecer entrada.
- O componente fecha e envia a propriedade
responseValuepara o servidor. - O servidor executa a lógica do lado do servidor e envia o componente com a entrada do usuário de volta para o cliente.
- Aguardando entrada
-
O estado inicial de um componente que aguarda a interação do usuário. A propriedade
controlDataestá definida, mas a propriedadeforceControlClosedé falsa. Este exemplo mostra um componente do controle deslizante no estado aguardando entrada.Neste exemplo, se o usuário não tiver fornecido um
responseValuee o controle não estiver fechado, o controle deslizante e o botão de entrada serão exibidos.const {controlClosed, sliderVal, sliderMin, sliderMax} = state; return (<div class={{"slider-chat": true}}> {responseValue ? null : <Fragment> <div class={{"slider-label": true}}>{label}</div> {controlClosed ? null : <Fragment> <div class={{"slider-container": true}}> <input on-change={onSliderChange} type="range" min={sliderMin} max={sliderMax} value={sliderVal} class={{"slider": true}} /> <div class={{"slider-value": true}}> {unitIcon && <div class={{"unit-icon": true}}><img src={unitIcon} /></div> } {sliderVal} {unitName} </div> <div class={{"button-container":true}}> <now-button variant="primary" label={buttonText || 'Confirm'} /> </div></div></Fragment>} - Entrada de manipulação
-
No exemplo anterior, o controle deslizante usa um componente
de botão agora, no qual o usuário clica para confirmar a entrada e enviá-la para o servidor. Quando o usuário clica no botão, a açãoVA_CONTROL#VALUE_SENTé acionada com a cargaresponseValue.'NOW_BUTTON#CLICKED': (data) => { const {updateState, dispatch, state: {sliderVal}} = data; updateState({controlClosed: true}); dispatch('VA_CONTROL#VALUE_SENT', { value: { sliderVal } }); } - Encerrado
-
Um componente que está fechado não pode mais aceitar a entrada do usuário. Os componentes geralmente são fechados porque:
- O usuário respondeu ao componente. O componente é encerrado e a conversa continua.
- O usuário encerrou o bate-papo. O servidor não espera por uma resposta.
Por exemplo, o componente do controle deslizante somente renderiza o prompt original quando está no estado fechado.
- Enviando resposta
-
Depois que o usuário responde, o controle é renderizado novamente no lado do usuário da conversa com o valor da propriedade
responseValue.Por exemplo, o controle deslizante usa este snippet para renderizar a resposta.
{responseValue && <div className="response-container slider-value"> {unitIcon && <div className="unit-icon"><img src={unitIcon} /></div> } {returnVal} {unitName} </div>}
Adicionando o componente a Designer do Virtual Agent
Depois de desenvolver o componente e implantá-lo em sua instância, adicione-o a Designer do Virtual Agent usando um controle e uma definição personalizados. Para obter mais informações, consulte Controles personalizados do Virtual Agent.