Рубрики
Без рубрики

Как отправить шаблон сообщения для Mini-Program Wechat?

Чтобы полностью воспользоваться преимуществами Mini-Program Wechat, вы не хотите пропустить возможность отправить сообщение шаблона. Это вызывает уведомление WeChat и отправляет ваш пользователь удар допамина. Какие…

Автор оригинала: David.

Чтобы полностью воспользоваться преимуществами Mini-Program Wechat, вы не хотите пропустить возможность отправить сообщение шаблона. Это вызывает уведомление WeChat и отправляет ваш пользователь удар допамина.

Что такое шаблон сообщения? Вместо того, чтобы позволить разработчикам отправлять все пользователи, WECHAT имеет 138 шаблонов с взаимозаменяемыми ключевыми словами, чтобы иметь более единый опыт для конечных пользователей.

Предварительное условие

А Мини-программный счет appid и appsecret.

Пример кода Мини-программный код – Нужно Wechat devtool эмулировать Backend Code – Node.js and express.js

Обратный инженер

Давайте начнем с конечного результата. Счастливый конец: пользователь получает ваше сообщение в поле «Сервисное сообщение»

Шаблон-сообщение.gif.

Сделать это, вам придется сделать запрос на пост

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

Наряду с необходимыми параметрами ниже:

параметры

https://developers.weixin.qq.com/miniprogram/en/dev/api/notice.html#send-template.htmlay#send-template-message Теперь это просто вопрос выложить головоломку вместе.

Как получить токен доступа?

3 варианта:

  1. Хорошая старая мода получить запрос
  2. Используйте библиотеку: wechat-jssdk
const { Wechat, MiniProgram } = require('wechat-jssdk');
const wechatConfig = {
 "appId": process.env.APP_ID,
 "appSecret": process.env.APP_SECRET,
 "miniProgram": {
  "appId": process.env.APP_ID,
  "appSecret": process.env.APP_SECRET,
 }
};
const wx = new Wechat(wechatConfig);
const { access_token } = await wx.jssdk.getAccessToken();
  1. Краткосрочный и ленивый способ: положить в свой AppID и AppSecret здесь

Как получить OpenID пользователя?

В вашем мини-программном коде сделайте что-то вроде

onLaunch: function () {
 const self = this;
 // Login
 wx.login({
  success: res => {
   wx.request({
    url: `http://your-backend-server.com/login?code=${res.code}`,
    header: {
     'content-type': 'application/json'
    },
    success(res) {
     const { session_key, openid } = res.data;
     // Save user's openid globally for later use
     self.globalData.openid = openid;
    }
   })
  }
 })
}

В вашем режиме BackeND отправьте запрос на получение

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

JSCODE, являющийся кодом, который вы попали из мини-программы, или вы можете использовать библиотеку снова и сделать что-то вроде

const session = await wx.miniProgram.getSession(req.query.code);

Тогда вы должны получить как Session_key и OpenID

Как получить идентификатор шаблона и данные шаблона?

После входа в https://mp.weixin.qq.com Перейдите на вкладку «Шаблон» слева и нажмите кнопку «Добавить» справа. (Не уверены, почему эта панель инструментов только наполовину переведена, но если у вас возникли проблемы с охватом, Google Translate)

1_upsjyg4g8o30vgc2jrowvq.png.

После нажатия кнопки «Добавить» вы увидите список шаблонов

1_tqouazwaxw1vb5kjj5gguq.png.

После выбора шаблона, нажав 选 用, вы сможете выбрать ключевые слова, которые вы хотите включить

1_rzwlaqoeqq0klp2e2lyq5q.png.

После отправки нажатием зеленой кнопки вы увидите список созданных шаблонов, скопируйте идентификатор шаблона оттуда

1_7xlghfuw6z61l6kwdrw_wq.png.

Так каковы данные, которые я должен пройти?

"data": {
 keyword1: {
  value: 'Product Name',
 },
 keyword2: {
  value: 'Product Description',
 },
 keyword3: {
  value: '10/10/2018',
 },
 keyword4: {
  value: '10/10/2018',
 }

На основе ключевых слов, которые вы выбрали, значение ключевых слов будет вставлена на основе заказа, который вы устроили при создании шаблона.

Как получить идентификатор формы?

Это может сделать много смысла, но WECHAT требует идентификатора формы, который генерируется только компонентом формы в мини-программе. Или вы можете использовать Prepawe_id из оплаты WECHAT.

В вашем WXML-файле мини-программного кода есть простая кнопка для тестирования.

Примечание * Включите флаг «Отправить отчет», чтобы сформировать тег для него, чтобы вернуть идентификатор формы

В файле JS мини-программного кода обрабатывайте событие «Отправить», как это

formSubmit(e) {
  const { formId } = e.detail;
  wx.request({
   // Use your local IP address if you're just testing
   url: `http://your-backend-server.com/send-message`,
   method: 'POST',
   header: {
    'content-type': 'application/json'
   },
   data: {
    form_id: formId,
    // Use the openid saved earlier
    touser: app.globalData.openid
   },
   success(res) {
     // Message should be sent, check your messages
   }
 });
}

Получение сообщения

После того, как вы попадете на тестовую кнопку, вы почувствуете хорошее ощущение вибрации с вашего телефона, а маленький красный значок уведомления всплывает.

Это означает, что вы преуспели.

Гигантские предостережения

Мини-программа Accountbox Sandbox не работает для шаблона сообщения. Сообщение может быть отправлено только одному и тому же пользователю, который создал FORM_ID или PREPAY_ID. Один FORM_ID действителен в течение семи дней и хорошо для одного сообщения. One Prepay_ID также действителен в течение семи дней и хорошо для 3 сообщений. Таким образом, вы можете задаться вопросом, но, если у меня есть система бронирования мероприятий, я хочу отправлять сообщения группе пользователей, когда событие прицеливается.

Там есть обходной путь, где вы можете сохранить Form_id в вашей базе данных, когда пользователь взаимодействует с кнопкой в мини-программе.

Когда вы отправляете групповое сообщение, вы привлечь пользователей, связанные с помощью form_id (s).

Тогда вам придется отслеживать срок годности и использование form_id (s).

Заключение

Если вы хотите понять свою игру разработки программного обеспечения, я собрал Бесплатный глоссарий WeChat для вас, чтобы переваривать.