aws-solutions / qnabot-on-aws

AWS QnABot is a multi-channel, multi-language conversational interface (chatbot) that responds to your customer's questions, answers, and feedback. The solution allows you to deploy a fully functional chatbot across multiple channels including chat, voice, SMS and Amazon Alexa.
https://aws.amazon.com/solutions/implementations/aws-qnabot
Apache License 2.0
401 stars 253 forks source link

Chaining rule in multilanguage #771

Closed preethy-1 closed 1 month ago

preethy-1 commented 1 month ago

Hi, Could you assist us with an issue we're facing? We have qna solution implemented in both English and Spanish, and we've created several flows using chaining rules in English. However, these chaining rules are not functioning when we switch to Spanish, as the values are not being converted to Spanish. Could you please help resolve this?

fhoueto-amz commented 1 month ago

Thanks. We will revert back

fhoueto-amz commented 1 month ago

The information shared is not specific. With that, my best suggestion is that you go through https://github.com/aws-solutions/qnabot-on-aws/tree/main/source/docs/multilanguage_support, https://github.com/aws-solutions/qnabot-on-aws/tree/main/source/docs/handlebars and https://aws.amazon.com/blogs/machine-learning/building-a-multilingual-question-and-answer-bot-with-amazon-lex/ to get an understanding of multilanguage and handlebar. Then you could use Handlebars templates to conditionally set session attributes or add 'if' statements to the answer field based on the detected language. For conditional chaining, you can refer to https://docs.aws.amazon.com/solutions/latest/qnabot-on-aws/configuring-the-chatbot-to-ask-the-questions-and-use-response-bots.html Thanks

preethy-1 commented 1 month ago

Hi,

We ran a CloudFormation stack with the parameter Language = English and enabled ENABLE_MULTI_LANGUAGE_SUPPORT = true in the Content Designer. Below is the export of the welcome response. The user interacts with the bot in both English and Spanish. The chaining rule works as expected in English. However, when the user interacts in Spanish and says "Sí," the chatbot does not respond, whereas it responds correctly when the user says "yes" in English. Could you please assist with converting the chaining rule to support Spanish as well? Can this be achieved by modifying the chaining rule in the Esproxy layer of the fulfillment Lambda? { "qna": [ { "a": "Greetings, Preethy! I'm Ada, your helper. Can we proceed?", "elicitResponse": { "response_sessionattr_namespace": "AcPersona", "responsebot_hook": "QNAFreeText" }, "alt": { "markdown": "Greetings, Preethy! I'm Ada, your helper. Can we proceed?" }, "conditionalChaining": "(SessionAttributes.AcPersona.FreeText == \"yes\" || SessionAttributes.AcPersona.FreeText == \"yes, that is correct\" ) ? \"Eligibility Criteria\" :SessionAttributes.AcPersona.FreeText", "type": "qna", "qid": "welcome", "q": [ "greeting user" ] } ] }

fhoueto-amz commented 1 month ago

Hi @preethy-1 have you been through the documentation I shared? This will help you tremendously if you are doing multi-language o get an understanding of multilanguage and handlebar.