
Teilen Sie:
Ich bin ein JavaScript-Entwickler und ein Developer Educator bei Vonage. Im Laufe der Jahre habe ich mich für Templates, Node.js, progressive Web-Apps und Offline-First-Strategien begeistert, aber was ich immer geliebt habe, ist eine nützliche, gut dokumentierte API. Mein Ziel ist es, Ihre Erfahrung mit unseren APIs so gut wie möglich zu gestalten.
Verbessern Sie Ihre automatische Spracherkennungsfunktion: Bewährte Praktiken für IVRs
Lesedauer: 2 Minuten
Wenn Sie Ihr Call Center-Menü benutzerfreundlicher gestalten wollen, kann der Ersatz von DTMF (nummerierte Optionen, die über die Tastatur eingegeben werden) durch IVR (Interactive Voice Response) ein guter Anfang sein. Aber wenn Sie sich schon einmal auffällig gefühlt haben, als Sie mit zunehmender Frustration etwas wie "Bezahlen Sie meine Rechnung" in Ihr Telefon brüllten, dann wissen Sie auch, dass IVR nicht perfekt ist. Wenn Sie IVR mit der Vonage Voice API betreiben, gibt es ein paar Dinge, die Sie tun können, um das Erlebnis zu verbessern.
Kontext geben
Sie erfassen Benutzereingaben mit ASR (Automatic Speech Recognition) bei Vonage, indem Sie eine Eingabeaktion in einem Call Control Object (NCCO) erstellen. Ein einfaches NCCO mit einer Sprachansage sieht wie folgt aus:
const ncco = [{
action: 'talk',
text: 'Thank you for calling the North Pole. Have you been naughty or nice?'
}
];Mit ASR können Sie Antworten auf Ihre Fragen sammeln. Um ASR zu verwenden, fügen Sie speech als einen Wert in das type Array ein, und liefern außerdem eine speech Eigenschaft mit der Konfiguration. In speech.contextkönnen Sie ein Array mit wahrscheinlichen Antworten bereitstellen.
const ncco = [{
action: 'talk',
text: 'Thank you for calling the North Pole. Have you been naughty or nice?',
},
{
action: 'input',
type: ['speech'],
eventUrl: [`https://${process.env.PROJECT_DOMAIN}.glitch.me/nice`],
speech: {
context: ['naughty','nice'],
endOnSilence: 1,
language: "en-US"
}
}
];Wenn der Anrufer auf eine Aufforderung antwortet, gibt ASR ein Array von Vermutungen zurück. Jede mögliche Antwort wird mit einem Vertrauenswert versehen, und die Vermutungen werden nach ihrem Vertrauenswert gereiht:
[ { confidence: '0.5399828', text: 'naughty' },
{ confidence: '0.51581204', text: 'Eddie' },
{ confidence: '0.51581204', text: 'honey' },
{ confidence: '0.51581204', text: 'buddy' },
{ confidence: '0.51581204', text: 'Eddy' } ]Sie können die Wirkung testen, indem Sie mit einem Homonym eines der Wörter in Ihrer context Array antworten. Das, was Sie tatsächlich gesagt haben, sollte immer noch mit höherem Vertrauen angezeigt werden, aber Sie werden feststellen, dass Homonyme oft die gleiche Vertrauensbewertung haben, und die Angabe von Wörtern im Kontext hilft dabei, sicherzustellen, dass die Wörter, an denen Sie interessiert sind, in der Liste enthalten sind:
[ { confidence: '0.5402811', text: 'howdy' },
{ confidence: '0.51581204', text: 'naughty' } ] Fehler antizipieren
Die künstliche Intelligenz steckt noch in den Kinderschuhen und neigt zu Frustration und Wutausbrüchen. Wenn Sie davon ausgehen, dass Sie brauchbare ASR-Ergebnisse erhalten, können Sie Ihren Anrufer sehr leicht aus dem Gespräch werfen.
Wenn Sie Vonage für ASR verwenden, erhalten Sie Ihre Ergebnisse in request.body.speech.results. Die Art und Weise, wie sich das results Array verhält sich im Falle eines Fehlers vielleicht nicht so, wie Sie es erwarten. Anstatt eine Länge von 0 zu haben, results ist einfach undefiniert. Die Prüfung, die Sie durchführen müssen, ist also für eine separate Eigenschaft, request.body.speech.error. Ihre Existenz dient als Hinweis für Ihren Code, dass Sie keine Informationen darüber haben, was als nächstes zu tun ist:
if (req.body.speech.error) {
res.json([{
action: 'talk',
text: 'We could not understand your request. Santa will bring you socks.'
}]);
} Wiederholte Fehler beachten
Wenn Sie einmal den Weg der ASR eingeschlagen haben, sind Sie nicht verpflichtet, ihn beizubehalten. Wenn ein Anrufer aufgefordert wird, sich zu wiederholen, kann er frustriert werden. Schlimmer noch: In einem komplexen System ist jeder Fehler eine neue Möglichkeit, dass etwas nicht bearbeitet wird, und Ihr Anrufer ist kurz davor, nach fünf Minuten, in denen er einen Roboter angeschrien hat, entlassen zu werden.
Vonage bietet Ihnen die Möglichkeit, zu verfolgen, zu welchem Gespräch eine Antwort gehört. Im Hauptteil der Anfragen an Ihre Endpunkte finden Sie eine UUID, um einen Anrufer und einen Anruf eindeutig zu identifizieren. Da die Endpunkte jedoch zustandslos sind, müssten Sie Informationen über das Gespräch und den Erfolg des Anrufers speichern, um die UUID verwenden zu können.
Verglichen mit der Verwaltung eines Datenspeichers sind NCCOs sehr einfach und können durch die Abstraktion von wiederkehrenden Eigenschaften noch einfacher gestaltet werden:
function sendNCCO(res, prompt, endpoint, context) {
const ncco = [{
action: 'talk',
text: prompt,
},
{
action: 'input',
type: ['speech'],
eventUrl: [`https://${process.env.PROJECT_DOMAIN}.glitch.me/${endpoint}`],
speech: {
context: context,
endOnSilence: 1,
language: "en-US"
}
}];
res.json(ncco);
}Sie können so viele Endpunkte einrichten, wie Sie möchten, um die Anzahl der Fehler zu bewältigen, die die Anrufer Ihrer Meinung nach tolerieren können. Sie müssen nur die für das jeweilige Szenario spezifischen Daten enthalten:
app.post('/nice_error', function(req, res) {
if (req.body.speech.error) {
sendNCCO(
res,
`We still couldn't understand you. Please say "naughty" or "nice".`,
'nice_repeat_error',
['naughty','nice']
);
} else {
// branches for naughty or nice
}
});An Endpunkten, an denen Sie das Gefühl haben, dass es an der Zeit ist, aufzugeben, können Sie auf DTMF oder einen Live-Operator umschalten.
Mehr erfahren
Um mit der Erstellung von IVR-Menüs zu beginnen, können Sie sich unsere Dokumentation über ASR und die Detaillierte Spracherkennungseinstellungen. Sie können sich ein Beispiel-IVR-Projekt auf Glitch.
Wir freuen uns immer, mit Ihnen über Ihren Anwendungsfall zu sprechen und helfen Ihnen bei der Fehlerbehebung in unserem Slack-Kanal der Gemeinschaft.
Teilen Sie:
Ich bin ein JavaScript-Entwickler und ein Developer Educator bei Vonage. Im Laufe der Jahre habe ich mich für Templates, Node.js, progressive Web-Apps und Offline-First-Strategien begeistert, aber was ich immer geliebt habe, ist eine nützliche, gut dokumentierte API. Mein Ziel ist es, Ihre Erfahrung mit unseren APIs so gut wie möglich zu gestalten.