Logo Zephyrnet

Dễ dàng di chuyển các luồng IVR của bạn sang Amazon Lex bằng công cụ di chuyển IVR

Ngày:

Bài đăng này được đồng viết bởi John Heater, SVP của Contact Center Practice tại NeuraFlash. NeuraFlash là Đối tác AWS Nâng cao với hơn 40 năm kinh nghiệm trong không gian thoại và tự động hóa. Với đội ngũ thiết kế hội thoại, kỹ sư dữ liệu và nhà phát triển AWS chuyên dụng, NeuraFlash giúp khách hàng tận dụng sức mạnh của Amazon Lex trong các trung tâm liên hệ của họ.

Amazon cung cấp công nghệ nhận dạng giọng nói tự động và hiểu ngôn ngữ tự nhiên để bạn có thể xây dựng trải nghiệm trò chuyện tinh vi và tạo luồng phản hồi giọng nói tương tác (IVR) hiệu quả. Tích hợp gốc với Kết nối Amazon, Trung tâm liên lạc dựa trên đám mây của AWS, cho phép bổ sung giao diện trò chuyện vào bất kỳ ứng dụng trung tâm cuộc gọi nào. Bạn có thể thiết kế trải nghiệm IVR để xác định yêu cầu của người dùng và đáp ứng những yêu cầu này bằng cách chạy logic nghiệp vụ thích hợp.

Hôm nay, NeuraFlash, một đối tác AWS APN, đã khởi chạy một công cụ di chuyển trên Thị trường AWS giúp bạn dễ dàng di chuyển luồng IVR VoiceXML (VXML) của mình sang Amazon Lex và Amazon Connect. Công cụ di chuyển lấy cấu hình VXML và các tệp XML ngữ pháp làm đầu vào và cung cấp định nghĩa bot Amazon Lex. Nó cũng hỗ trợ ngữ pháp và luồng liên hệ Amazon Connect để bạn có thể nhanh chóng bắt đầu với trải nghiệm trò chuyện IVR của mình.

Trong bài đăng này, chúng tôi đề cập đến việc sử dụng công cụ di chuyển IVR và xem xét định nghĩa kết quả về bot Amazon Lex và các luồng liên hệ của Amazon Connect.

Tổng quan về cuộc trò chuyện mẫu

Bạn có thể sử dụng VXML mẫu và các tệp ngữ pháp làm đầu vào để dùng thử công cụ. IVR mẫu hỗ trợ cuộc hội thoại sau:

IVR: Chào mừng bạn đến với ngân hàng ACME. Để xác minh, tôi có thể nhận bốn mã cuối cùng trên SSN trên tài khoản không?

Người gọi: Vâng, là 1234.

IVR: Tuyệt vời. Và ngày tháng năm sinh của chủ sở hữu chính?

Người gọi: ngày 1 tháng 2000 năm XNUMX.

IVR: Cảm ơn bạn. Hôm nay tôi giúp gì được cho bạn?

Người gọi: Tôi muốn thanh toán.

IVR: Chắc chắn. Số thẻ tín dụng là gì?

Người gọi: 1234 5678 1234 5678

IVR: Hiểu rồi. CVV là gì?

Người gọi: 123

IVR: Còn ngày hết hạn thì sao?

Người gọi: tháng 2025 năm XNUMX.

IVR: Tuyệt vời. Hôm nay chúng ta phải trả bao nhiêu?

Người gọi: $ 100

IVR: Cảm ơn bạn. Khoản thanh toán 100 đô la của bạn trên thẻ kết thúc bằng 5678 đã được xử lý. Chúng tôi có thể giúp gì khác cho bạn không?

Người gọi: Không, cảm ơn.

IVR: Chúc một ngày tốt lành.

Tổng quan về công cụ di chuyển

Sơ đồ sau minh họa kiến ​​trúc của công cụ di chuyển.

Bạn có thể truy cập công cụ di chuyển trong AWS Marketplace. Làm theo hướng dẫn để tải lên tệp VXML và tệp XML ngữ pháp của bạn.

Công cụ xử lý các tệp XML đầu vào để tạo luồng IVR. Bạn có thể tải xuống quy trình liên hệ Amazon Connect, định nghĩa bot Amazon Lex và các tệp ngữ pháp hỗ trợ.

Phương pháp luận di cư

Công cụ di chuyển IVR phân tích ứng dụng IVR đã tải lên và tạo bot Amazon Lex, luồng Amazon Connect và tệp ngữ pháp SRGS. Một bot được tạo cho mỗi ứng dụng VXML (hoặc tệp VXML). Mỗi trạng thái đầu vào trong tệp VXML được ánh xạ tới lời nhắc hộp thoại trong bot Amazon Lex. Tệp ngữ pháp tương ứng cho trạng thái đầu vào được sử dụng để tạo vùng ngữ pháp. Đối với luồng Kết nối Amazon, mỗi tệp VXML ánh xạ tới một nút trong luồng IVR. Trong dòng chảy, a GetCustomerInputBlock giao quyền kiểm soát cho Amazon Lex để quản lý hộp thoại.

Hãy xem xét nội dung VXML sau trong hộp thoại mẫu để xác minh người dùng. Bạn có thể tải xuống Xác nhận tài khoản Tệp 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>

Ngoài tệp VXML trước đó, chúng tôi bao gồm các ngữ pháp SRGS sau từ ứng dụng IVR trong công cụ di chuyển IVR:

  • cuối4SSN.grxml - Ngữ pháp để nhận ra bốn chữ số cuối cùng của số An sinh xã hội
  • dateOfBirth.grxml - Ngữ pháp để nhận biết ngày tháng năm sinh

Một bot Amazon Lex được tạo ra để xác minh người gọi. Các Bot xác minh có một ý định (VerifyAccount).

Bot có hai khe cắm (SSN, DOB) tham chiếu các tệp ngữ pháp cho SSN và ngữ pháp ngày sinh, tương ứng. Bạn có thể tải xuống cuối4SSN.grxmldateOfBirth.grxml các tệp ngữ pháp dưới dạng đầu ra để tạo các loại vị trí tùy chỉnh trong Amazon Lex.

Trong một ví dụ khác về luồng thanh toán, công cụ di chuyển IVR đọc trong luồng thu tiền thanh toán để tạo ra một bot Amazon Lex có thể xử lý các khoản thanh toán. Bạn có thể tải xuống tương ứng THANH TOÁN Tệp VXML và ngữ pháp 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>

Ngoài tệp VXML trước đó, chúng tôi bao gồm các ngữ pháp SRGS sau từ ứng dụng IVR trong công cụ di chuyển IVR:

Một bot Amazon Lex được tạo ra để thu thập các chi tiết thanh toán. Các Bot thanh toán có một ý định (MakePayment).

Bot có bốn khe (credit card number, expiration date, CVV, payment amount) tham chiếu đến tệp ngữ pháp. Bạn có thể tải xuống creditCard.grxml, creditCardExpiration.grxml, thẻ tín dụngCVV.grxmlPaymentAmount.grxml các tệp ngữ pháp dưới dạng đầu ra để tạo các loại vị trí tùy chỉnh trong Amazon Lex.

Cuối cùng, công cụ di chuyển cung cấp luồng liên hệ IVR thanh toán để quản lý cuộc trò chuyện đầu cuối.

Kết luận

Amazon Lex cho phép bạn dễ dàng xây dựng trải nghiệm giao tiếp bằng ngôn ngữ tự nhiên, tinh vi. Công cụ di chuyển IVR cho phép bạn dễ dàng di chuyển các luồng IVR VXML của mình sang Amazon Lex. Công cụ này cung cấp các định nghĩa và ngữ pháp bot ngoài các luồng liên hệ của Amazon Connect. Nó cho phép bạn di chuyển các luồng IVR như hiện tại và bắt đầu trên Amazon Lex, mang lại cho bạn sự linh hoạt để xây dựng trải nghiệm trò chuyện theo tốc độ của riêng bạn.

Sử dụng công cụ di chuyển trên Thị trường AWS và di chuyển IVR của bạn sang Amazon Lex ngay hôm nay.


Về các tác giả

máy sưởi John có hơn 15 năm kinh nghiệm trong lĩnh vực AI và tự động hóa. Là SVP của Trung tâm Liên hệ Thực hành tại NeuraFlash, anh ấy dẫn đầu việc triển khai các kỹ thuật tự động hóa và AI mới nhất cho danh mục sản phẩm và giải pháp khách hàng.

Sandeep Srinivasan là Giám đốc sản phẩm của nhóm Amazon Lex. Là một nhà quan sát nhạy bén về hành vi của con người, anh ấy rất đam mê trải nghiệm của khách hàng. Anh ấy dành thời gian thức của mình ở nơi giao thoa giữa con người, công nghệ và tương lai.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?