alexa / alexa-skills-kit-sdk-for-nodejs

The Alexa Skills Kit SDK for Node.js helps you get a skill up and running quickly, letting you focus on skill logic instead of boilerplate code.
Apache License 2.0
3.12k stars 736 forks source link

In-Skill-Purchase Connections.Response (Buy|Upsell) with "purchaseResult":"DECLINED" never received for es-ES, es-US locales #667

Closed voiceactivity closed 3 years ago

voiceactivity commented 3 years ago

I have a problem with the Spanish version of the Alexa skill that uses ISP: Connections.Response (Buy|Upsell) with "purchaseResult":"DECLINED" never received for es-ES, es-US locales


[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report  
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Other... Please describe:

Expected Behavior

The skill with ISP support for es-ES, es-US locales should receive and handle the Connections.Response (Buy|Upsell) with "purchaseResult":"DECLINED" to gracefully handle the case when a subscription been declined by user.

Current Behavior

The skill sending Buy | Upsell requests like this: return handlerInput.responseBuilder .addDirective({ type: "Connections.SendRequest", name: "Buy", payload: { InSkillProduct: { productId: "amzn1.adg.product.0c...", }, upsellMessage: "Acceso Premium es gratis durante 14 días . Después se te cobrará €0,99 al mes...?", }, token: "correlationToken", }) .getResponse();

When a user's reply is 'Si' (yes), then the skill receives the response as it should: "request": { "type": "Connections.Response", "requestId": "amzn1.echo-api.request.ac...", "timestamp": "2020-12-02T05:05:56Z", "locale": "es-US", "status": { "code": "200", "message": "OK" }, "name": "Buy", "payload": { "purchaseResult": "ACCEPTED", "productId": "amzn1.adg.product.0c..." }, "token": "correlationToken" }

But, when a user's reply for the Buy prompt is 'No', then no Connections.Response received at all. As a result a skill handler cannot handle the response for the "purchaseResult":"DECLINED". Instead, the upsell re-prompt spoken again and again. E.g. A: Acceso Premium es gratis durante 14 días . Después se te cobrará €0,99 al mes...? U: No A: Acceso Premium es gratis durante 14 días . Después se te cobrará €0,99 al mes...? U: No A: Acceso Premium es gratis durante 14 días . Después se te cobrará €0,99 al mes...? U: No ...

Interestingly enough that the same code works for all English locales. In fact I have a few skills with ISP (en) and I never had a problem like this one.

To summarize, the skill never receives back the Connections.Response with "purchaseResult":"DECLINED" for 'Buy' with 'es' locales. But the Connections.Response with "purchaseResult":"ACCEPTED" received and handled. The same functionality works as expected for all 'en' locales.

Also I've noticed that if a subscription already purchased and then you could try unsubscribe the "purchaseResult": "DECLINED" returned successfully!!!

"request": { "type": "Connections.Response", "requestId": "amzn1.echo-api.request.7f...", "timestamp": "2020-12-02T05:07:16Z", "locale": "es-US", "status": { "code": "200", "message": "OK" }, "name": "Cancel", "payload": { "purchaseResult": "DECLINED", "productId": "amzn1.adg.product.0..." }, "token": "correlationToken" }

Actually, the skill failed the certification for this very reason.

Environment

Node.js and NPM Info

ShenChen93 commented 3 years ago

Hi @voiceactivity ,

I would need to reach out to service team to figure out whether Connections.Response is sent back to your skill endpoint when users say 'no'. Could you please provide us with the skillId ?

Thanks, Shen

voiceactivity commented 3 years ago

Sure: amzn1.ask.skill.03f7a015-354f-4659-92a9-48b822c29556

Thanks a lot for a super quick response!

ShenChen93 commented 3 years ago

Hi @voiceactivity ,

It seems the service team already know this issue and they are work on it. I will keep posting updates here.

Thanks, Shen

voiceactivity commented 3 years ago

Perfect! Thank you.

ShenChen93 commented 3 years ago

Hi @voiceactivity ,

I heard from service team that the issue should be resovled now. Could you please try and let us know if it is fixed ?

Thanks, Shen

voiceactivity commented 3 years ago

It works! Appreciate your help Shen and the Service team of course 👍

Thanks, Paul