I en nettsamtale (widgeten, den vertsbaserte siden, appen din) ser innringeren en chat ved siden av stemmen, slik at agenten kan gjøre mer enn å snakke. Innringere på telefon får ikke noe av dette.
Slå på Agent → Verktøy → Send til innringeren (send_to_caller i agent-API-et), så kan agenten legge opptil fem kort om gangen på innringerens skjerm: en tittel, en linje under, en beskrivelse, et bilde, en lenke og opptil to svarknapper hver; den kan også tilby opptil tre hurtigsvar under et spørsmål. Lenker leses aldri opp.
Agenten kan bare sende lenker og bilder den har fått i den samtalen: instruksjonene og hilsenen, kunnskapsbasen (et dokument lest fra en nettside bærer adressen til siden), svarene fra funksjonene dine og de ferdige kortene. En lenke må i tillegg være på en av allowed_hosts (et ferdig korts eget nettsted er alltid det). Lenker agenten finner på, eller som innringeren leser opp, sendes ikke. Lenker til de nettstedene i agentens ord kan klikkes i chatten.
"send_to_caller": {
"enabled": true,
"allowed_hosts": ["shop.example.com", "*.cdn.example.com"],
"presets": [
{ "name": "hours", "when": "asked when we open", "title": "Opening hours",
"description": "Mon–Sat 9:00–18:00", "url": "https://shop.example.com/stores", "image_url": "" }
]
}
Hver sending sendes til deg som webhooken call.message_sent (channel, items med title og url, quickReplies, blocked). En samtale sender høyst 10 ganger.
Under samtalen kan innringeren også skrive (en e-postadresse, et ordrenummer) eller trykke på en svarknapp; agenten svarer på det som på tale og stopper først hvis den snakket. Opptil 500 tegn per melding, én i sekundet, 100 per samtale. I samtaleposten er disse turene merket som skrevne eller tappede.
Besøkende kan også begynne med å skrive i stedet for å snakke: widgeten og den hostede siden tilbyr begge deler, eller bare én av dem hvis du velger det under Agent → Deploy. En skrevet samtale har ingen stemme og faktureres per melding. Bruk Chat API for å chatte med en agent fra din egen server.
Widgeten gir siden din et evasay-objekt. Alt er valgfritt, og samtalerammen lytter bare til siden din hvis den er et av widgetens tillatte nettsteder (Agent → Rull ut):
<script src="https://evasay.com/voice-widget.js" data-agent="AGENT_SLUG" async></script>
<script>
window.evasay = window.evasay || [];
evasay.push(function (agent) {
agent.setVariables({ plan: 'pro', page: location.pathname }); // for the next call
agent.update('Cart: 2 items, $120', { key: 'cart' }); // during it
agent.registerTool('add_to_cart', async function (args) {
// your code, in the visitor's browser
return { ok: true, checkout: 'https://shop.example.com/checkout' };
});
agent.on('cards', function (cards) {}); // also 'live', 'ended'
});
</script>
setVariables fyller {{name}} i instruksjonene og hilsenen. De kommer fra den besøkendes nettleser, så agenten får beskjed om at de ikke er verifisert, og de når aldri funksjonene dine eller startoppslaget.update forteller agenten hva som skjer på siden uten å få den til å svare; en nyere oppdatering med samme key erstatter den eldre."kind": "page", ingen url) på agenten, og registrer en funksjon med samme navn på siden din. Agenten kan bare kalle den i samtaler fra en side som har registrert den; den venter opptil timeout_sec (1–10, standard 5) på svaret med mindre wait_for_result er false. Den kjører innlogget som den besøkende, som et klikk fra dem: be om bekreftelse på din egen side før alt som koster penger eller ikke kan angres. Lenker i svaret kan sendes som kort.Sett Hvem som kan starte en samtale til Bare med et token, og la serveren din hente et engangstoken for den innloggede brukeren:
curl https://evasay.com/api/v1/voice/web-calls \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "AGENT_ID", "user_id": "u_42", "variables": { "name": "Ann" }, "expires_in": 600 }'
Svaret har token (én samtale, innen expires_in sekunder, 30–3600, standard 600), agent (sluggen) og web_call_url. Gi tokenet til siden med data-token-url="/your/endpoint" på widgetens skript (den POST-er dit med den besøkendes informasjonskapsler og leser { "token": "…" }) eller med agent.setToken(async () => token). Tokenets variables er verifisert: instruksjonene, startoppslaget og malene til funksjonene dine kan bruke dem, det samme kan user_id, som samtalen beholder (userId i samtalen, user_id for å filtrere samtaler). Behold API-nøkkelen din på serveren din.
I din egen app POST-er du { "token": "…", "pageTools": ["add_to_cart"] } til https://evasay.com + web_call_url. Svaret er samtalens tilkobling (en WebRTC-tilbudsadresse eller en WebSocket-adresse med samtaletoken) for en RTVI-klient som Pipecats klient-SDK; for iOS, Android og React Native, se Mobilapper. Kort, sidefunksjoner og varsler kommer som RTVI server-message (evasay.cards, evasay.tool, evasay.notice); send skrevne ord med send-text og sidens meldinger og svar som client-message evasay.context og evasay.tool_result. Eller før lyden selv med Lyd over en WebSocket, med user_id og page_tools.