Zephyrnet-logo

Migreer uw IVR-stromen eenvoudig naar Amazon Lex met behulp van de IVR-migratietool

Datum:

Dit bericht is mede geschreven door John Heater, SVP van de Contact Center Practice bij NeuraFlash. NeuraFlash is een Advanced AWS-partner met meer dan 40 gezamenlijke jaren ervaring in de spraak- en automatiseringsruimte. Met een toegewijd team van gespreksontwerpers, data-engineers en AWS-ontwikkelaars helpt NeuraFlash klanten om te profiteren van de kracht van Amazon Lex in hun contactcenters.

Amazon-Lex biedt automatische spraakherkenning en technologieën voor het begrijpen van natuurlijke taal, zodat u geavanceerde gesprekservaringen kunt opbouwen en effectieve IVR-stromen (Interactive Voice Response) kunt creëren. Een native integratie met Amazon Connect, het cloudgebaseerde contactcenter van AWS, maakt de toevoeging van een conversatie-interface aan elke callcentertoepassing mogelijk. U kunt IVR-ervaringen ontwerpen om gebruikersverzoeken te identificeren en hieraan te voldoen door de juiste bedrijfslogica uit te voeren.

Vandaag heeft NeuraFlash, een AWS APN-partner, een migratietool gelanceerd op AWS Marketplace waarmee u eenvoudig uw VoiceXML (VXML) IVR-stromen kunt migreren naar Amazon Lex en Amazon Connect. De migratietool neemt de VXML-configuratie en grammaticale XML-bestanden als invoer en biedt een Amazon Lex-botdefinitie. Het ondersteunt ook grammatica's en Amazon Connect-contactstromen, zodat u snel aan de slag kunt met uw IVR-gesprekservaringen.

In dit bericht behandelen we het gebruik van de IVR-migratietool en bekijken we de resulterende Amazon Lex-botdefinitie en Amazon Connect-contactstromen.

Voorbeeldgesprek overzicht

U kunt de voorbeeld-VXML- en grammaticabestanden als invoer gebruiken om de tool uit te proberen. De voorbeeld-IVR ondersteunt de volgende conversatie:

IVR: Welkom bij ACME bank. Kan ik ter verificatie de laatste vier op SSN op het account krijgen?

Beller: Ja, het is 1234.

IVR: Geweldig. En de geboortedatum van de hoofdhouder?

Beller: 1 januari 2000.

IVR: Dank je. Hoe kan ik je vandaag helpen?

Beller: Ik wil graag betalen.

IVR: Zeker. Wat is het creditcardnummer?

Beller: 1234 5678 1234 5678

IVR: Ik snap het. Wat is de CVV?

Beller: 123

IVR: Hoe zit het met de houdbaarheidsdatum?

Beller: januari 2025.

IVR: Geweldig. Hoeveel betalen we vandaag?

Beller: $ 100

IVR: Dank je. Uw betaling van $ 100 op een kaart eindigend op 5678 is verwerkt. Kunnen we je nog ergens mee helpen?

Beller: Nee, bedankt.

IVR: Fijne dag nog.

Overzicht van migratietool

Het volgende diagram illustreert de architectuur van de migratietool.

U hebt toegang tot de migratietool in de AWS Marketplace. Volg de instructies om uw VXML- en grammaticale XML-bestanden te uploaden.

De tool verwerkt de invoer-XML-bestanden om een ​​IVR-stroom te creëren. U kunt de Amazon Connect-contactstroom, Amazon Lex-botdefinitie en ondersteunende grammaticabestanden downloaden.

Migratiemethodologie

De IVR-migratietool analyseert de geüploade IVR-toepassing en genereert een Amazon Lex-bot, Amazon Connect-stromen en SRGS-grammaticabestanden. Per VXML-toepassing (of VXML-bestand) wordt één bot gegenereerd. Elke invoerstatus in het VXML-bestand wordt toegewezen aan een dialoogvenster in de Amazon Lex-bot. Het corresponderende grammaticabestand voor de invoerstatus wordt gebruikt om een ​​grammaticaslot te maken. Voor de Amazon Connect-stroom wordt elk VXML-bestand toegewezen aan een knooppunt in de IVR-stroom. Binnen de stroom, een GetCustomerInputBlock de controle over aan Amazon Lex om de dialoog te beheren.

Laten we eens kijken naar de volgende VXML-inhoud in het voorbeelddialoogvenster voor gebruikersverificatie. U kunt de downloaden Account verifiëren VXML-bestand.

<?xml version="1.0" encoding="UTF-8"?> <vxml version="1.0" application="app_root.vxml"> <!--*** Verify user with SSN ***-->
<form id="Verify_SSN"> <field name="Verify_SSN"> <grammar type="application/srgs+xml" srcexpr="'./grammar/last4ssn.grxml'"/> <prompt> <audio expr="'./prompts/Verify_SSN/Init.wav'"> To verify your account, can I please have the last four digits of your social security number. </audio> </prompt>
<!--*** Handling when the user input is not understood ***-->
<nomatch count="1"> <audio expr="./prompts/Verify_SSN/nm1.wav'"> I'm sorry, I didn't understand. Please tell me the last four digits of your social security number. </audio>
</nomatch>
<nomatch count="2"> <audio expr="./prompts/Verify_SSN/nm2.wav'"> I'm sorry, I still didn't get that. Please say or enter the last four digits of your social security number. You can also say I dont know if you do not have it. </audio>
</nomatch> <!--*** Handling when the user does not provide input ***--> <noinput count="1"> <audio expr="./prompts/Verify_SSN/ni1.wav'"> I'm sorry, I couldn't hear you. Please tell me the last four digits of your social security number. </audio>
</noinput>
<noinput count="2"> <audio expr="./prompts/Verify_SSN/ni1.wav'"> I'm sorry, I still could not hear you. Please say or enter the last four digits of your social security number. You can also say I dont know if you do not have it. </audio>
</noinput> <!--*** Handling when the user input is recognized ***--> <filled> <if cond="Verify_SSN.option == 'agent'"> <assign name="transfer_reason" expr="'agent'"/> <goto next="transfer.vxml"/> <elseif cond="Verify_SSN.option == 'dunno'" /> <assign name="transfer_reason" expr="'no_ssn'"/> <goto next="transfer.vxml"/> <else/> <assign name="last4_ssn" expr="Verify_SSN.option"/> <goto next="#Verify_DOB"/> </if> </filled> </field>
</form> <!--*** Verify user with date of birth ***-->
<form id="Verify_DOB"> <field name="Verify_DOB"> <grammar type="application/srgs+xml" srcexpr="'./grammar/dateofbirth.grxml'"/> <prompt> <audio expr="'./prompts/Verify_DOB/Init.wav'"> Thank you. And can I also have your date of birth? </audio> </prompt> <!--*** Handling when the user input is not understood ***-->
<nomatch count="1"> <audio expr="./prompts/Verify_DOB/nm1.wav'"> I'm sorry, I didn't understand. Please say your date of birth. </audio>
</nomatch>
<nomatch count="2"> <audio expr="./prompts/Verify_DOB/nm2.wav'"> I'm sorry, I still didn't get that. Please say or enter your date of birth. For example, you can say July twenty fifth nineteen eighty or enter zero seven two five one nine eight zero. </audio>
</nomatch> <!--*** Handling when the user does not provide input ***--> <noinput count="1"> <audio expr="./prompts/Verify_DOB/ni1.wav'"> I'm sorry, I couldn't hear you. Please say your date of birth. </audio>
</noinput>
<noinput count="2"> <audio expr="./prompts/Verify_DOB/ni1.wav'"> I'm sorry, I still could not hear you. Please say or enter your date of birth. For example, you can say July twenty fifth nineteen eighty or enter zero seven two five one nine eight zero. </audio>
</noinput> <!--*** Handling when the user input is recognized ***--> <filled> <if cond="Verify_DOB.option == 'agent'"> <assign name="transfer_reason" expr="'agent'"/> <goto next="transfer.vxml"/> <else/> <assign name="date_of_birth" expr="Verify_DOB.option"/> <goto next="validate_authentication.vxml"/> </if> </filled> </field>
</form> </vxml>

Naast het voorgaande VXML-bestand, nemen we de volgende SRGS-grammatica's uit de IVR-toepassing op in de IVR-migratietool:

  • last4SSN.grxml – Grammatica om de laatste vier cijfers van het burgerservicenummer te herkennen
  • dateOfBirth.grxml – Grammatica om de geboortedatum te herkennen

Er wordt een Amazon Lex-bot gemaakt om de beller te verifiëren. De Verificatiebot heeft één bedoeling (VerifyAccount).

De bot heeft twee slots (SSN, DOB) die verwijzen naar de grammaticabestanden voor respectievelijk de SSN- en geboortedatumgrammatica. U kunt de downloaden last4SSN.grxml en dateOfBirth.grxml grammaticabestanden als uitvoer om de aangepaste slottypes in Amazon Lex te maken.

In een ander voorbeeld van een betalingsstroom leest de IVR-migratietool de betalingsincassostromen in om een ​​Amazon Lex-bot te genereren die betalingen kan afhandelen. U kunt de bijbehorende Betaling VXML-bestand en SRGS-grammatica.

<?xml version="1.0" encoding="UTF-8"?> <vxml version="1.0" application="app_root.vxml"> <!--*** Collect the users credit card for payment ***-->
<form id="CreditCard_Collection"> <field name="CreditCard_Collection"> <grammar type="application/srgs+xml" srcexpr="'./grammar/creditcard.grxml'"/> <prompt> <audio expr="'./prompts/CreditCard_Collection/Init.wav'"> To start your payment, can I please have your credit card number. </audio> </prompt>
<!--*** Handling when the user input is not understood ***-->
<nomatch count="1"> <audio expr="./prompts/CreditCard_Collection/nm1.wav'"> I'm sorry, I didn't understand. Please tell me your credit card number. </audio>
</nomatch>
<nomatch count="2"> <audio expr="./prompts/CreditCard_Collection/nm2.wav'"> I'm sorry, I still didn't get that. Please say or enter your credit card number. </audio>
</nomatch> <!--*** Handling when the user does not provide input ***--> <noinput count="1"> <audio expr="./prompts/CreditCard_Collection/ni1.wav'"> I'm sorry, I couldn't hear you. Please tell me your credit card number. </audio>
</noinput>
<noinput count="2"> <audio expr="./prompts/CreditCard_Collection/ni1.wav'"> I'm sorry, I still could not hear you. Please say or enter your credit card number. </audio>
</noinput> <!--*** Handling when the user input is recognized ***--> <filled> <assign name="creditcard_number" expr="CreditCard_Collection.option"/> <goto next="#ExpirationDate_Collection"/> </filled> </field>
</form> <!--*** Collect the credit card expiration date ***-->
<form id="ExpirationDate_Collection"> <field name="ExpirationDate_Collection"> <grammar type="application/srgs+xml" srcexpr="'./grammar/creditcard_expiration.grxml'"/> <prompt> <audio expr="'./prompts/ExpirationDate_Collection/Init.wav'"> Thank you. Now please provide your credit card expiration date. </audio> </prompt> <!--*** Handling when the user input is not understood ***-->
<nomatch count="1"> <audio expr="./prompts/ExpirationDate_Collection/nm1.wav'"> I'm sorry, I didn't understand. Please say the expiration date. </audio>
</nomatch>
<nomatch count="2"> <audio expr="./prompts/ExpirationDate_Collection/nm2.wav'"> I'm sorry, I still didn't get that. Please say or enter your credit card expiration date. </audio>
</nomatch> <!--*** Handling when the user does not provide input ***--> <noinput count="1"> <audio expr="./prompts/ExpirationDate_Collection/ni1.wav'"> I'm sorry, I couldn't hear you. Please say the expiration date. </audio>
</noinput>
<noinput count="2"> <audio expr="./prompts/ExpirationDate_Collection/ni1.wav'"> I'm sorry, I still could not hear you. Please say or enter your credit card expiration date. </audio>
</noinput> <!--*** Handling when the user input is recognized ***--> <filled> <if cond="ExpirationDate_Collection.option == 'agent'"> <assign name="transfer_reason" expr="'agent'"/> <goto next="transfer.vxml"/> <else/> <assign name="creditcard_expiration" expr="ExpirationDate_Collection.option"/> <goto next="#CVV_Collection"/> </if> </filled> </field>
</form> <!--*** Collect the credit card CVV number ***-->
<form id="CVV_Collection"> <field name="CVV_Collection"> <grammar type="application/srgs+xml" srcexpr="'./grammar/creditcard_cvv.grxml'"/> <prompt> <audio expr="'./prompts/CVV_Collection/Init.wav'"> Almost done. Now please tell me the CVV code. </audio> </prompt> <!--*** Handling when the user input is not understood ***-->
<nomatch count="1"> <audio expr="./prompts/CVV_Collection/nm1.wav'"> I'm sorry, I didn't understand. Please say the CVV on the credit card. </audio>
</nomatch>
<nomatch count="2"> <audio expr="./prompts/CVV_Collection/nm2.wav'"> I'm sorry, I still didn't get that. Please say or enter the credit card CVV. It can be found on the back of the card. </audio>
</nomatch> <!--*** Handling when the user does not provide input ***--> <noinput count="1"> <audio expr="./prompts/CVV_Collection/ni1.wav'"> I'm sorry, I couldn't hear you. Please say the CVV on the credit card. </audio>
</noinput>
<noinput count="2"> <audio expr="./prompts/CVV_Collection/ni1.wav'"> I'm sorry, I still could not hear you. Please say or enter the credit card CVV. It can be found on the back of the card. </audio>
</noinput> <!--*** Handling when the user input is recognized ***--> <filled> <if cond="CVV_Collection.option == 'agent'"> <assign name="transfer_reason" expr="'agent'"/> <goto next="transfer.vxml"/> <else/> <assign name="creditcard_cvv" expr="CVV_Collection.option"/> <goto next="#PaymentAmount_Collection"/> </if> </filled> </field>
</form> <!--*** Collect the payment amount ***-->
<form id="PaymentAmount_Collection"> <field name="PaymentAmount_Collection"> <grammar type="application/srgs+xml" srcexpr="'./grammar/amount.grxml'"/> <prompt> <audio expr="'./prompts/PaymentAmount_Collection/Init.wav'"> Finally, please tell me how much you will be paying. You can also say full amount. </audio> </prompt> <!--*** Handling when the user input is not understood ***-->
<nomatch count="1"> <audio expr="./prompts/PaymentAmount_Collection/nm1.wav'"> I'm sorry, I didn't understand. Please say the amount of your payment. </audio>
</nomatch>
<nomatch count="2"> <audio expr="./prompts/PaymentAmount_Collection/nm2.wav'"> I'm sorry, I still didn't get that. Please say or enter your payment amount. If you will be paying in full you can just say full amount. </audio>
</nomatch> <!--*** Handling when the user does not provide input ***--> <noinput count="1"> <audio expr="./prompts/PaymentAmount_Collection/ni1.wav'"> I'm sorry, I couldn't hear you. Please say the amount of your payment. </audio>
</noinput>
<noinput count="2"> <audio expr="./prompts/PaymentAmount_Collection/ni1.wav'"> I'm sorry, I still could not hear you. Please say or enter your payment amount. If you will be paying in full you can just say full amount. </audio>
</noinput> <!--*** Handling when the user input is recognized ***--> <filled> <if cond="PaymentAmount_Collection.option == 'agent'"> <assign name="transfer_reason" expr="'agent'"/> <goto next="transfer.vxml"/> <elseif cond="Verify_SSN.option == 'full_amount'" /> <assign name="creditcard_amount" expr="'full''"/> <goto next="processpayment.vxml"/> <else/> <assign name="creditcard_amount" expr="PaymentAmount_Collection.option"/> <goto next="processpayment.vxml"/> </if> </filled> </field>
</form> </vxml>

Naast het voorgaande VXML-bestand, nemen we de volgende SRGS-grammatica's uit de IVR-toepassing op in de IVR-migratietool:

Er wordt een Amazon Lex-bot gemaakt om de betalingsgegevens te verzamelen. De Betalingsbot heeft één bedoeling (MakePayment).

De bot heeft vier slots (credit card number, expiration date, CVV, payment amount) die verwijzen naar het grammaticabestand. U kunt de downloaden creditcard.grxml, creditCardExpiration.grxml, creditCardCVV.grxml en betalingsbedrag.grxml grammaticabestanden als uitvoer om de aangepaste slottypes in Amazon Lex te maken.

Ten slotte biedt de migratietool de betaling IVR contactstroom om het gesprek van begin tot eind te beheren.

Conclusie

Met Amazon Lex kunt u eenvoudig geavanceerde, natuurlijke gesprekservaringen opbouwen. Met de IVR-migratietool kunt u eenvoudig uw VXML IVR-stromen migreren naar Amazon Lex. De tool biedt de botdefinities en grammatica's naast de Amazon Connect-contactstromen. Het stelt je in staat om je IVR-stromen te migreren zoals het is en aan de slag te gaan op Amazon Lex, waardoor je de flexibiliteit hebt om de gesprekservaring in je eigen tempo uit te bouwen.

Gebruik de migratietool op AWS Marketplace en migreer vandaag nog uw IVR naar Amazon Lex.


Over de auteurs

Johannes Verwarming heeft meer dan 15 jaar ervaring in AI en automatisering. Als SVP van de Contact Center Practice bij NeuraFlash leidt hij de implementatie van de nieuwste AI- en automatiseringstechnieken voor een portfolio van producten en klantoplossingen.

Sandeep Srinivasan is een productmanager in het Amazon Lex-team. Als scherp waarnemer van menselijk gedrag heeft hij een passie voor klantervaring. Zijn wakkere uren brengt hij door op het snijvlak van mens, technologie en de toekomst.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?