Embedded VAPI¶
Die Embedded VAPI ist nur für IC-Webseiten gedacht, Sie funktioniert nur im Tablet Browser.
Sie nutzt keine HTTP-Requests. Eine eingebettete
Webseite sendet stattdessen eine Nachricht an das Tablet und erhält die
Antwort wieder per postMessage.
Premium-Endpunkte
Alle Embedded-VAPI-Funktionen sind nur mit Premium-Zugriff verfügbar.
Ablauf¶
Die Webseite sendet den Request an das Parent-Window:
window.parent.postMessage(
{
function: 'getPlayerName',
apiKey: '<API-Key>',
requestId: 'request-1',
payload: {},
},
'*'
);
Die Antwort kommt als Message zurück:
window.addEventListener('message', (event) => {
const response = event.data;
if (!response || response.requestId !== 'request-1') return;
console.log(response);
});
Request¶
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
function |
string |
Ja | Name der Embedded-VAPI-Funktion |
apiKey |
string |
Ja | API-Key aus dem VNET |
requestId |
string |
Nein | Eigene ID, um Antworten Requests zuzuordnen |
payload |
object |
Nein | Funktionsspezifische Daten |
Response¶
Erfolgreiche Responses haben immer ok: true und enthalten die Nutzdaten in
payload.
{
"function": "getPlayerName",
"ok": true,
"requestId": "request-1",
"payload": {
"playerName": "Max_Musterbrötchen"
}
}
Fehlerhafte Responses haben ok: false und enthalten eine Fehlermeldung in
error.
Funktionen¶
Spielername¶
Premium-Endpunkt
Dieser Endpunkt ist nur mit Premium-Zugriff verfügbar.
MESSAGE getPlayerName
Liefert den Charakternamen des Spielers, in dessen Tablet die Webseite geöffnet ist.
Request-Beispiel¶
window.parent.postMessage(
{
function: 'getPlayerName',
apiKey: '<API-Key>',
requestId: 'name-1',
payload: {},
},
'*'
);
Response-Beispiel¶
{
"function": "getPlayerName",
"ok": true,
"requestId": "name-1",
"payload": {
"playerName": "Max_Musterbrötchen"
}
}
Telefonnummern¶
Premium-Endpunkt
Dieser Endpunkt ist nur mit Premium-Zugriff verfügbar.
MESSAGE getPlayerPhoneNumbers
Liefert die Telefonnummern des Spielers und die aktuell aktive Telefonnummer.
Request-Beispiel¶
window.parent.postMessage(
{
function: 'getPlayerPhoneNumbers',
apiKey: '<API-Key>',
requestId: 'phone-1',
payload: {},
},
'*'
);
Response-Beispiel¶
{
"function": "getPlayerPhoneNumbers",
"ok": true,
"requestId": "phone-1",
"payload": {
"phoneNumbers": ["1822-1234567", "1822-7654321"],
"activeNumber": "1822-1234567"
}
}
VNET-Mail senden¶
Premium-Endpunkt
Dieser Endpunkt ist nur mit Premium-Zugriff verfügbar.
MESSAGE sendMailMessage
Sendet eine Nachricht an eine VNET-Mailadresse.
Payload¶
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
receiverMail |
string |
Ja | Zieladresse, zum Beispiel name@statev.de |
msg |
string |
Ja | Nachrichtentext |
Request-Beispiel¶
window.parent.postMessage(
{
function: 'sendMailMessage',
apiKey: '<API-Key>',
requestId: 'mail-1',
payload: {
receiverMail: 'max_brötchenmann@statev.de',
msg: 'Hallo aus der Embedded VAPI.',
},
},
'*'
);
Response-Beispiel¶
{
"function": "sendMailMessage",
"ok": true,
"requestId": "mail-1",
"payload": {
"message": "send"
}
}
Fehler-Beispiele¶
Fehlt receiverMail, antwortet die Funktion aktuell mit einem Fehlerobjekt im
Payload:
{
"function": "sendMailMessage",
"ok": true,
"requestId": "mail-1",
"payload": {
"error": "No Receiver Mail"
}
}
Fehlt msg, ist die Response entsprechend:
{
"function": "sendMailMessage",
"ok": true,
"requestId": "mail-1",
"payload": {
"error": "No Message"
}
}
Vollständiges Beispiel¶
<button id="loadName">Spielername laden</button>
<pre id="output"></pre>
<script>
const output = document.getElementById('output');
const pending = new Map();
function callEmbeddedVapi(functionName, payload = {}) {
const requestId = `${functionName}-${Date.now()}`;
pending.set(requestId, functionName);
window.parent.postMessage(
{
function: functionName,
apiKey: '<API-Key>',
requestId,
payload,
},
'*'
);
}
window.addEventListener('message', (event) => {
const response = event.data;
if (!response || !pending.has(response.requestId)) return;
pending.delete(response.requestId);
output.textContent = JSON.stringify(response, null, 2);
});
document.getElementById('loadName').addEventListener('click', () => {
callEmbeddedVapi('getPlayerName');
});
</script>