Verkkopuhelussa (widget, isännöity sivu, sovelluksesi) soittaja näkee chatin äänen vieressä, joten agentti voi tehdä muutakin kuin puhua. Puhelimella soittavat eivät saa tätä.
Ota käyttöön Agentti → Työkalut → Lähetä soittajalle (send_to_caller agentti-API:ssa), niin agentti voi näyttää soittajan ruudulla enintään viisi korttia kerrallaan: otsikon, rivin sen alla, kuvauksen, kuvan, linkin ja enintään kaksi vastauspainiketta kussakin; se voi myös tarjota enintään kolme pikavastausta kysymyksen alla. Linkkejä ei lueta koskaan ääneen.
Agentti saa lähettää vain linkkejä ja kuvia, jotka sille on annettu kyseisessä puhelussa: sen ohjeet ja tervehdys, tietopankki (verkkosivulta luetun asiakirjan mukana on sen osoite), funktioidesi vastaukset ja valmiit kortit. Lisäksi linkin täytyy olla jollakin allowed_hosts-isännällä (valmiin kortin oma sivusto on aina sallittu). Linkkejä, jotka agentti keksii tai jotka soittaja lukee ääneen, ei lähetetä. Näiden sivustojen linkit agentin sanoissa ovat napsautettavia chatissa.
"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": "" }
]
}
Jokainen lähetys tulee sinulle call.message_sent-webhookina (channel, items kentillä title ja url, quickReplies, blocked). Puhelu lähettää enintään 10 kertaa.
Puhelun aikana soittaja voi myös kirjoittaa (sähköpostiosoite, tilausnumero) tai napauttaa vastauspainiketta; agentti vastaa siihen kuin puheeseen ja lopettaa ensin, jos se puhui. Enintään 500 merkkiä viestissä, yksi sekunnissa, 100 puhelussa. Puhelutiedoissa nämä vuorot on merkitty kirjoitetuiksi tai napautetuiksi.
Vierailijat voivat myös aloittaa kirjoittamalla puhumisen sijaan: widget ja isännöity sivu tarjoavat molemmat, tai vain toisen, jos valitset niin kohdassa Agent → Deploy. Kirjoitetussa keskustelussa ei ole ääntä, ja se laskutetaan viestikohtaisesti. Jos haluat keskustella agentin kanssa omalta palvelimeltasi, käytä Chat API:a.
Widget antaa sivullesi evasay-olion. Kaikki on valinnaista, ja puhelukehys kuuntelee sivuasi vain, jos se on yksi widgetin sallituista verkkosivustoista (Agentti → Ota käyttöön):
<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-arvot täyttävät {{name}} ohjeissa ja tervehdyksessä. Ne tulevat kävijän selaimesta, joten agentille kerrotaan, ettei niitä ole varmennettu, eivätkä ne koskaan päädy funktioihisi tai aloitushakuun.update kertoo agentille, mitä sivulla tapahtuu, saamatta sitä vastaamaan; uudempi päivitys samalla key-arvolla korvaa vanhemman."kind": "page", ei url), ja rekisteröi sivullesi samanniminen funktio. Agentti saa kutsua sitä vain puheluissa sivulta, joka on rekisteröinyt sen; se odottaa vastausta enintään timeout_sec (1–10, oletus 5), ellei wait_for_result ole false. Se suoritetaan kävijän kirjautumisella, kuin hänen oma napsautuksensa: pyydä vahvistus omalla sivullasi ennen kaikkea, mikä maksaa rahaa tai mitä ei voi perua. Sen vastauksen linkit voidaan lähettää korttina.Aseta Kuka voi aloittaa puhelun arvoon Vain tunnisteella ja anna palvelimesi hakea kertakäyttöinen tunniste kirjautuneelle käyttäjälle:
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 }'
Vastauksessa on token (yksi puhelu, expires_in sekunnin sisällä, 30–3600, oletus 600), agent (slug) ja web_call_url. Anna tunniste sivulle widgetin skriptin data-token-url="/your/endpoint"-attribuutilla (se tekee sinne POST-pyynnön kävijän evästeillä ja lukee { "token": "…" }) tai agent.setToken(async () => token)-kutsulla. Tunnisteen variables on varmennettu: ohjeet, aloitushaku ja funktioidesi mallit voivat käyttää niitä, samoin user_id:tä, jonka puhelu säilyttää (userId puhelussa, user_id puheluiden suodatukseen). Pidä API-avaimesi palvelimellasi.
Omassa sovelluksessasi tee POST { "token": "…", "pageTools": ["add_to_cart"] } osoitteeseen https://evasay.com + web_call_url. Vastaus on puhelun yhteys (WebRTC-tarjousosoite tai WebSocket-osoite puhelutunnisteen kanssa) RTVI-asiakkaalle, kuten Pipecatin asiakas-SDK:lle; iOS:lle, Androidille ja React Nativelle katso Mobiilisovellukset. Kortit, sivufunktiot ja huomautukset saapuvat RTVI-server-message-viesteinä (evasay.cards, evasay.tool, evasay.notice); lähetä kirjoitetut sanat send-text-viestillä ja sivun ilmoitukset ja vastaukset client-message-viesteinä evasay.context ja evasay.tool_result. Tai siirrä ääni itse osiolla Ääni WebSocketin kautta antamalla user_id ja page_tools.