VALIDATION ERRORS - actions-on-google

I get an error when I run a code with a transaction update. What should I do?
MalformedResponse
expected_inputs[0].possible_intents[0].input_value_data.transaction_decision_value_spec.proposed_order.cart.line_items[0].sub_lines[0].line_items[1].sub_lines[0].sub_lines[0]:
line item must not have more than $0 note(s).
when say "confirm transaction" I get response
{
"audioResponse": "//NExAASWo...",
"conversationToken": "CiZDIzU5Y2...",
"expectUserResponse": true,
"response": "Here's your order summary. Your total is $38.99 . Ready to place the order?",
"visualResponse": {
"agentLogoUrl": "",
"visualElements": []
}
}
Can you answer me more?
When I want to get the delivery address I request "Get address"
and i get response "Your Google Account is missing a delivery address. You can add an address, then come back and try again."
{
"audioResponse": "//NExAAQyD...",
"conversationToken": "GhZzaW11bG...",
"response": "Your Google Account is missing a delivery address. You can add an address, then come back and try again.",
"visualResponse": {
"agentLogoUrl": "",
"visualElements": []
}
}

Related

error after login payer - "We couldn't complete your payment for you. To get your payments working again, check your account or contact us"?

i am using live credentials(app) in localhost:5000 (Use a production WSGI server instead.)
showing this message after create subscription and login payer -
We couldn't complete your payment for you. To get your payments
working again, check your account or contact us
in console showing error -
Failed to load resource: the server responded with a status of 400
agreement details :-
agreement_data ={
"name": request.form.get('name'),
"description": request.form.get('description'),
"start_date": (datetime.datetime.now() + datetime.timedelta(hours=1)).strftime('%Y-%m-%dT%H:%M:%SZ'),
"plan": {
"id": request.form.get('id')
},
"payer": {
"payment_method": "paypal",
"payer_info": {
"email": session.get('user_email')
}
}
}
billing_agreement = BillingAgreement(agreement_data)
if billing_agreement.create():
print("Billing Agreement created successfully")
for link in billing_agreement.links:
if link.method == "REDIRECT":
# Capture redirect url
redirect_url = str(link.href)
print("For approving billing agreement, redirect user to\n [%s]" % (redirect_url))
return redirect(redirect_url)
error page FULL URL - https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-9TU27402A4608321V#/checkout/genericError?code=UEFZRVJfQ0FOTk9UX01BS0VfUEFZTUVOVA%3D%3D

"The agent returned an empty TTS" when action is not opened separately to asking an intent

When I invoke the skill with 'okay Google, ask {skillname} to {utterance}' I get the response 'The agent returned an empty tts" and the conversation closes. It doesn't even seem to hit my backend - I've tried hosting the backend code on both a local server and on AWS and the same issue happens in both cases. There's no log of the request being made either on Stackdriver on Google or on CloudWatch on AWS. The only response I get is the following in the debug tab:
{
"response": "The agent returned an empty TTS.",
"expectUserResponse": false,
"conversationToken": "EosDS2o4d0...",
"audioResponse": "",
"ssmlMarkList": [],
"debugInfo": {
"sharedDebugInfoList": [
{
"name": "Response Validation",
"debugInfo": "The agent returned an empty TTS.",
"subDebugEntryList": []
}
],
"conversationBuilderExecutionEventsList": []
},
"visualResponse": {
"visualElementsList": [
{
"displayText": {
"content": "The agent returned an empty TTS."
}
}
],
"suggestionsList": [],
"agentLogoUrl": ""
},
"clientError": 0,
"is3pResponse": true,
"clientOperationList": [],
"projectName": "",
"renderedHtml": ""
}
Nothing in any of the other tabs. When I try invoking the phrases in the same way on my phone, I just see a loading symbol and again nothing in the logs to say it's even hitting the backend.
Weirdly, this doesn't happen when I say 'okay Google, talk to {skillname} {utterance}' - this works absolutely fine.
All the intents work perfectly well when I've opened my action first, and then invoke them. I've built this using Jovo and published on Alexa also and the problem is only happening on Google.

Difference between start_nickname and start_address

Can somebody explain me what is the difference between start_nickname and start_address in https://developer.uber.com/docs/riders/references/api/v1.2/requests-post ? Maybe in form of examples? I don't know which one to use to provide street and city info.
start_nickname in POST /requests is the label used for the destination in the rider app when you create a request via the api. So please use start[latitude|longitude] or start_place_id to specify Start Location.
So if you try to request a ride with just start_nickname and start_address
{
"product_id": "a1111c8c-c720-46c3-8534-2fcdd730040d",
"start_nickname" : "Uber HQ",
"start_address" : "1455 Market Street, San Francisco",
"end_latitude": 37.795,
"end_longitude": -122.440,
"end_nickname" : "Embarcadero",
"end_address" : "One Embarcadero Center, San Francisco"
}
you will get a response like:
{
"fields": {
"": "Both start_latitude and start_longitude or start_place_id are
required."
},
"message": "Invalid request",
"code": "validation_failed"
}
In order to make a valid ride request you need to add:
"start_latitude": 37.776,
"start_longitude": -122.418,
Or "start_place_id" (This is the name of an Uber saved place. Only “home” or “work” is acceptable.)

PayPal Express checkout - does not seem to run successfully

So, I am trying to figure this out but cannot seem to get this right.
I am trying to integrate paypal express onto a website. I have the sandbox environment with the facilitator and buyer accounts.
I paste in the sample code and change the client values and transaction details etc... like so:
paypal.Button.render({
env: 'sandbox', // Optional: specify 'sandbox' environment
client: {
sandbox: 'My Client ID here'
},
payment: function () {
var env = this.props.env;
var client = this.props.client;
return paypal.rest.payment.create(env, client, {
intent: "sale",
payer: { payment_method: "paypal" },
transactions: [
{
amount: { total: '14.00', currency: 'GBP' },
description: "This is a payment description"
},
],
redirect_urls: {
return_url: "http://somesite.com/success",
cancel_url: "http://somesite.com/cancel"
}
});
},
commit: true, // Optional: show a 'Pay Now' button in the checkout flow
onAuthorize: function (data, actions) {
// Optional: display a confirmation page here
alert('confirmation here');
return actions.payment.execute().then(function () {
// Show a success page to the buyer
alert('success here');
});
}
}, '#paypal-button');
The issue I am facing is that when you hit the paypal button - in the popup I do not see the amount.
Then when continuing, I get an error from javascript like so:
JavaScript runtime error: Error: Payment Api response error:
{
"name": "INTERNAL_SERVICE_ERROR",
"message": "An internal service error has occurred",
"information_link": "https://developer.paypal.com/docs/api/#INTERNAL_SERVICE_ERROR",
"debug_id": "a9ceebeb96bab"
}
Error: Payment Api response error:
{
"name": "INTERNAL_SERVICE_ERROR",
"message": "An internal service error has occurred",
"information_link": "https://developer.paypal.com/docs/api/#INTERNAL_SERVICE_ERROR",
"debug_id": "a9ceebeb96bab"
}
at Anonymous function (https://www.paypalobjects.com/api/checkout.js:8325:17)
at _loop2 (https://www.paypalobjects.com/api/checkout.js:1509:25)
at SyncPromise.prototype.dispatch (https://www.paypalobjects.com/api/checkout.js:1542:17)
at SyncPromise.prototype.resolve (https://www.paypalobjects.com/api/checkout.js:1480:13)
at Anonymous function (https://www.paypalobjects.com/api/checkout.js:1533:25)
at _loop2 (https://www.paypalobjects.com/api/checkout.js:1509:25)
at SyncPromise.prototype.dispatch (https://www.paypalobjects.com/api/checkout.js:1542:17)
at SyncPromise.prototype.resolve (https://www.paypalobjects.com/api/checkout.js:1480:13)
at Anonymous function (https://www.paypalobjects.com/api/checkout.js:1533:25)
at _loop2 (https://www.paypalobjects.com/api/checkout.js:1509:25)
So how the heck do I know what the error is?
Second question: Hopefully when this is all working with your help, how can I get back the response and determine if its a success or failure of payment along with detailed information to log it on my website and display to the user? What about custom variables like paymentID generated from my site? Can I get that information back?
Thank you
You're missing some important information for the API.
Things like AMOUNT{}, and others.
https://developer.paypal.com/docs/integration/direct/create-process-order/
I have a problem with this as well, I can get to the actions.payment.execute() and I get an error, _loop2 etc etc.

Google Calendar API key is not working

So accessing from here: https://console.developers.google.com/project
In my project, I just enabled the Calendar API.
Now I am trying to do the following: (my key hidden for obvious reasons)
$client = new Zend_Http_Client('https://www.googleapis.com/calendar/v3/calendars/en.usa#holiday#group.v.calendar.google.com/events');
$client->setParameterGet(array(
'key' => '########################',
));
$feed = $client->request()->getBody();
echo "<pre>";
print_r($feed);
exit;
But doing that gives me the following error:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
What am I doing wrong? I am using a Server API Key.
A few days ago I had similar problem. Check your calendar ID in www.google.com/calendar/ -> my calendar -> calendar settings and calendar address. Id should contain letters and numbers, not email address.
I figured it out. The calendar ID must be urlencoded.