Я хочу создать чат-бота с Dialogflow и Google Assistant вместе с API транзакций Google, чтобы пользователь мог заказать некоторые элементы.На данный момент мой агент содержит следующие четыре намерения:
Default Welcome Intent
(текстовый ответ: Здравствуйте, вы хотите купить шоколадную коробку?) Default Fallback Intent
Int3
(обучающая фраза: Да, я хочу, выполнение: включен веб-крюк) Int4
(событие: actions_intent_TRANSACTION_DECISION
, выполнение: включен веб-крюк)
Я использую Dialogflow Json вместо Node.js для соединения моего агента с API транзакций.Я хочу создать корзину и заказ для пользователя, наконец, убедившись, что пользователь удовлетворяет требованиям транзакции, используя действие actions.intent.TRANSACTION_DECISION
действий Google.По этой причине, следуя документам Google, при срабатывании Int3
я использую веб-крючок, который подключает мой бэкэнд Google Assistant, который отправляет обратно следующий json (для запуска actions.intent.TRANSACTION_DECISION
):
{
"fulfillmentText": "This is your order preview:",
"payload": {
"google": {
"expectUserResponse": true,
"isSsml": false,
"noInputPrompts": [],
"systemIntent": {
"data": {
"@type": "type.googleapis.com/google.actions.v2.TransactionDecisionValueSpec",
"orderOptions": {
"requestDeliveryAddress": true
},
"paymentOptions": {
"actionProvidedOptions": {
"displayName": "VISA **** **** **** 3235",
"paymentType": "PAYMENT_CARD"
}
},
"proposedOrder": {
"cart": {
"lineItems": [
{
"description": "Book",
"id": "1",
"name": "Book",
"price": {
"amount": {
"currencyCode": "USD",
"nanos": 0,
"units": 31
},
"type": "ACTUAL"
},
"quantity": 2,
"subLines": [],
"type": "REGULAR"
}
],
"merchant": {
"id": "Amazon",
"name": "Amazon"
},
"otherItems": []
},
"id": "<UNIQUE_ORDER_ID>",
"otherItems": [
{
"id": "Subtotal",
"name": "Subtotal",
"price": {
"amount": {
"currencyCode": "USD",
"nanos": 0,
"units": 62
},
"type": "ACTUAL"
},
"type": "SUBTOTAL"
},
{
"id": "Delivery fees",
"name": "Delivery fees",
"price": {
"amount": {
"currencyCode": "USD",
"nanos": 0,
"units": 10
},
"type": "ACTUAL"
},
"type": "FEE"
}
],
"totalPrice": {
"amount": {
"currencyCode": "USD",
"units": 72
},
"type": "ACTUAL"
}
}
},
"intent": "actions.intent.TRANSACTION_DECISION"
}
}
}
}
Однако я получаю следующие ошибки в симуляторе Google Assistant:
MalformedResponse
expected_inputs[0].possible_intents[0].input_value_data.transaction_decision_value_spec.proposed_order: subtotal price is not sum of regular lineItems. Expected-> Sum of line item price: units: 31 nanos: 0 currency: USD Actual-> Provided total price: units: 62 nanos: 0 currency: USD.
MalformedResponse
expected_inputs[0].possible_intents[0].input_value_data.transaction_decision_value_spec.proposed_order: total price is not sum of lineItems and otherItems. Expected-> Sum of line item price: units: 42 nanos: 0 currency: USD Actual-> Provided total price: units: 72 nanos: 0 currency: USD.
Почему я получаю эту ошибку, поскольку я указал "quantity": 2
в соответствующем lineItem
?
Совершенно очевидно, что промежуточный итог должен составлять units: 62
, поскольку я заказал "quantity": 2
продуктов по units: 31
цене каждый ...
Предварительный просмотр окончательного заказавыглядит так (это заимствовано из примеров документов Google):