order-update.js отправил "{}" в качестве ответа в транзакции API-действий на Google - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь отправить обновление о состоянии заказа после того, как пользователь отправил заказ.Я использовал действия в руководстве по транзакциям Google коды для построения моей системы.Однако сначала я получил сообщение «Не могу прочитать свойство« JWT »с неопределенным значением» и изменил свой код на const {google} = require('googleapis');.

. Теперь я получаю «{}» в качестве ответа на консоли при запуске »файл order-update.js и не может получить уведомление.Я пробую это на мобильном устройстве.Я не уверен, что это потому, что я использую режим песочницы.

const {google} = require('googleapis');
const request = require('request');
const {OrderUpdate} = require('actions-on-google');
const key = require('<my_service_account_path>');
const jwtClient = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key,
  ['https://www.googleapis.com/auth/actions.fulfillment.conversation'],
  null
);

jwtClient.authorize((err, tokens) => {
  if (err) {
    console.log(err);
    return;
  }
  const currentTime = new Date().toISOString();
  const actionOrderId = '<my_order_id>';
  const orderUpdate = new OrderUpdate({
    actionOrderId: actionOrderId,
    orderState: {
      label: 'Order has been delivered!',
      state: 'FULFILLED',
    },
    updateTime: currentTime,
  });


  const bearer = 'Bearer ' + tokens.access_token;
  const options = {
    method: 'POST',
    url: 'https://actions.googleapis.com/v2/conversations:send',
    headers: {
      'Authorization': bearer,
    },
    body: {
      custom_push_message: {
        order_update: orderUpdate,
      },
      // The line below should be removed for non-sandbox transactions.
      is_in_sandbox: true,
    },
    json: true,
  };


  request.post(options, (err, httpResponse, body) => {
    if (err) {
      console.log(err);
      return;
    }
    console.log(body);
  });
});

В руководстве я не смог найти ответа, который должен был получить, но я считаю, что "{}" - это не ответ.Для push-уведомления ожидаемым ответом было «200: ОК».

1 Ответ

0 голосов
/ 14 февраля 2019

Вы регистрируете тело (или ошибку), которое является объектом JSON.Для успешного ответа пустое тело JSON не удивительно.Ошибка должна включать сообщение об ошибке.

Если вы хотите убедиться, что ответом был HTTP-код 200, «ОК», то вам следует проверить документацию httpResponse.statusCode.

. состояния

Некоторые важные обновления заказов приводят к отправке push-уведомлений на мобильные устройства с поддержкой Assistant.

, но не говорит, что всебудут.Неясно, что он считает «важным», однако установка поля userNotification «является предложением для уведомления и не обязательно приведет к уведомлению».Вы, вероятно, можете добавить поле с чем-то вроде

  const orderUpdate = new OrderUpdate({
    actionOrderId: actionOrderId,
    orderState: {
      label: 'Order has been delivered!',
      state: 'FULFILLED',
    },
    updateTime: currentTime,
    userNotification: {
      title: "Update on your order",
      text: "Your order has been delivered!"
    }
  });
...