제퍼넷 로고

IVR 마이그레이션 도구를 사용하여 IVR 흐름을 Amazon Lex로 쉽게 마이그레이션

시간

이 게시물은 NeuraFlash의 Contact Center Practice SVP인 John Heater가 공동으로 작성했습니다. NeuraFlash는 음성 및 자동화 분야에서 40년 이상의 경험을 보유한 고급 AWS 파트너입니다. 대화 디자이너, 데이터 엔지니어 및 AWS 개발자로 구성된 전담 팀이 있는 NeuraFlash는 고객이 컨택 센터에서 Amazon Lex의 이점을 활용할 수 있도록 지원합니다.

아마존 렉스 자동 음성 인식 및 자연어 이해 기술을 제공하여 정교한 대화 경험을 구축하고 효과적인 대화형 음성 응답(IVR) 흐름을 생성할 수 있습니다. 기본 통합 아마존 연결, AWS의 클라우드 기반 컨택 센터를 통해 모든 콜 센터 애플리케이션에 대화형 인터페이스를 추가할 수 있습니다. 적절한 비즈니스 로직을 실행하여 사용자 요청을 식별하고 이를 이행하도록 IVR 경험을 설계할 수 있습니다.

오늘 AWS APN 파트너인 NeuraFlash는 다음에서 마이그레이션 도구를 출시했습니다. AWS Marketplace VoiceXML(VXML) IVR 흐름을 Amazon Lex 및 Amazon Connect로 쉽게 마이그레이션하는 데 도움이 됩니다. 마이그레이션 도구는 VXML 구성 및 문법 XML 파일을 입력으로 사용하고 Amazon Lex 봇 정의를 제공합니다. 또한 문법 및 Amazon Connect 고객 응대 흐름을 지원하므로 IVR 대화 경험을 빠르게 시작할 수 있습니다.

이 게시물에서는 IVR 마이그레이션 도구 사용에 대해 설명하고 결과 Amazon Lex 봇 정의 및 Amazon Connect 고객 응대 흐름을 검토합니다.

샘플 대화 개요

샘플 VXML 및 문법 파일을 입력으로 사용하여 도구를 시험해 볼 수 있습니다. 샘플 IVR은 다음 대화를 지원합니다.

IVR: ACME 은행에 오신 것을 환영합니다. 확인을 위해 계정의 SSN에서 마지막 XNUMX개를 얻을 수 있습니까?

발신자: 네, 1234입니다.

IVR: 좋습니다. 그리고 기본 보유자의 생년월일은?

발신자: 1년 2000월 XNUMX일.

IVR: 감사합니다. 오늘은 어떻게 도와드릴까요?

발신자: 결제하고 싶습니다.

IVR: 물론입니다. 신용 카드 번호는 무엇입니까?

발신자: 1234 5678 1234 5678

IVR: 알겠습니다. CVV는 무엇입니까?

발신자: 123

IVR: 만료 날짜는 어떻습니까?

발신자: 2025년 XNUMX월.

IVR: 좋습니다. 우리는 오늘 얼마를 지불하고 있습니까?

발신자: $100

IVR: 감사합니다. 100로 끝나는 카드의 $5678 지불이 처리됩니다. 다른 도움이 필요하십니까?

발신자: 아니요.

IVR: 좋은 하루 되세요.

마이그레이션 도구 개요

다음 다이어그램은 마이그레이션 도구의 아키텍처를 보여줍니다.

AWS Marketplace에서 마이그레이션 도구에 액세스할 수 있습니다. 지침에 따라 VXML 및 문법 XML 파일을 업로드합니다.

이 도구는 입력 XML 파일을 처리하여 IVR 흐름을 만듭니다. Amazon Connect 고객 응대 흐름, Amazon Lex 봇 정의 및 지원 문법 파일을 다운로드할 수 있습니다.

마이그레이션 방법론

IVR 마이그레이션 도구는 업로드된 IVR 애플리케이션을 분석하고 Amazon Lex 봇, Amazon Connect 흐름 및 SRGS 문법 파일을 생성합니다. VXML 애플리케이션(또는 VXML 파일)당 하나의 봇이 생성됩니다. VXML 파일의 각 입력 상태는 Amazon Lex 봇의 대화 상자 프롬프트에 매핑됩니다. 입력 상태에 해당하는 문법 파일은 문법 슬롯을 생성하는 데 사용됩니다. Amazon Connect 흐름의 경우 각 VXML 파일은 IVR 흐름의 노드에 매핑됩니다. 흐름 내에서, GetCustomerInputBlock 대화를 관리하기 위해 Amazon Lex에 제어를 넘깁니다.

사용자 확인을 위한 샘플 대화 상자에서 다음 VXML 콘텐츠를 고려해 보겠습니다. 당신은 다운로드 할 수 있습니다 계정 확인 VXML 파일.

<?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>

앞의 VXML 파일 외에도 IVR 마이그레이션 도구에 IVR 응용 프로그램의 다음 SRGS 문법을 포함합니다.

호출자를 확인하기 위해 Amazon Lex 봇이 생성됩니다. 그만큼 인증 봇 하나의 의도(VerifyAccount).

봇에는 두 개의 슬롯이 있습니다(SSN, DOB) SSN 및 생년월일 문법에 대한 문법 파일을 각각 참조합니다. 당신은 다운로드 할 수 있습니다 last4SSN.grxml생년월일.grxml 문법 파일을 출력으로 사용하여 Amazon Lex에서 사용자 지정 슬롯 유형을 생성합니다.

지불 흐름의 다른 예에서 IVR 마이그레이션 도구는 지불 수집 흐름을 읽고 지불을 처리할 수 있는 Amazon Lex 봇을 생성합니다. 해당하는 다운로드가 가능합니다 결제 VXML 파일 및 SRGS 문법.

<?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>

앞의 VXML 파일 외에도 IVR 마이그레이션 도구에 IVR 응용 프로그램의 다음 SRGS 문법을 포함합니다.

결제 세부 정보를 수집하기 위해 Amazon Lex 봇이 생성됩니다. 그만큼 결제 봇 하나의 의도(MakePayment).

봇에는 XNUMX개의 슬롯이 있습니다(credit card number, expiration date, CVV, payment amount) 문법 파일을 참조합니다. 당신은 다운로드 할 수 있습니다 신용카드.grxml, 신용카드 만료.grxml, 신용카드CVV.grxml지불금액.grxml 문법 파일을 출력으로 사용하여 Amazon Lex에서 사용자 지정 슬롯 유형을 생성합니다.

마지막으로 마이그레이션 도구는 결제 IVR 문의 흐름 종단 간 대화를 관리합니다.

결론

Amazon Lex를 사용하면 정교한 자연어 대화 환경을 쉽게 구축할 수 있습니다. IVR 마이그레이션 도구를 사용하면 VXML IVR 흐름을 Amazon Lex로 쉽게 마이그레이션할 수 있습니다. 이 도구는 Amazon Connect 고객 응대 흐름 외에 봇 정의 및 문법을 제공합니다. 이를 통해 IVR 흐름을 있는 그대로 마이그레이션하고 Amazon Lex에서 시작할 수 있으므로 원하는 속도로 대화 환경을 구축할 수 있는 유연성을 제공합니다.

다음에서 마이그레이션 도구 사용 AWS Marketplace 지금 IVR을 Amazon Lex로 마이그레이션하십시오.


저자에 관하여

존 히터 AI 및 자동화 분야에서 15년 이상의 경험을 보유하고 있습니다. NeuraFlash의 Contact Center Practice SVP로서 그는 제품 및 고객 솔루션 포트폴리오에 대한 최신 AI 및 자동화 기술 구현을 이끌고 있습니다.

산딥 스리니바산 Amazon Lex 팀의 제품 관리자입니다. 인간 행동에 대한 예리한 관찰자로서 그는 고객 경험에 열정적입니다. 그는 깨어 있는 시간을 사람, 기술, 미래의 교차점에서 보냅니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?