Соответствующий кодовый адрес этой статьи:githubОригинальная ссылка:Оригинальная ссылка
Типы мини-сообщений программы Push
- Подписаться на новости
- Шаблон сообщения
- Единая служба обмена сообщениями
- Сообщение службы поддержки клиентов
из-заШаблон сообщенияне в сети, пример сообщения здесьПодписаться на новости
Чтобы реализовать сообщение о подписке, нам нужно знать значения параметров нескольких небольших программ.
-
апплет
-
ключ апплета
-
Идентификатор шаблона подписки на мини-программу (template_id)
Вышеуказанные параметры могут быть вОпыт управления небольшими программаминайти на
апплет
-
Перед разработкой необходимо получить идентификатор шаблона настройки апплета.Если шаблон сообщения не установлен, вы можете добавить новый шаблонmp.weixin.qq.com
-
После того, как у вас есть идентификатор шаблона, вам необходимо получить разрешение на отправку сообщений
Разрешение пользователя на отправку push-сообщений
Когда заказ или другие операции завершены, вызовите апплет на стороне клиента, чтобы подписаться на интерфейс сообщений и получить результат операции пользователя.
// index.wxml
<button bindtap="bindSubscribeMessage"> 获取下发权限 </button>
// index.js
bindSubscribeMessage() {
wx.requestSubscribeMessage({
tmplIds: ['tmplIds'],
success (res) {
console.log(res)
}
})
}
отправить код пользователя
Поскольку серверу отправки сообщений нужен апплетopenid
Итак, нам нужно пройтиwx.login
Апплет входа будетcode
отправить на сервер
bindLogin() {
/* 1. 获取code 请求开发服务器
* 2. 开发服务器通过 code + appid + secret 请求微信服务器获取 openid
*/
wx.login({
success: res => {
if (res.code) {
const { task } = this.data;
this.request(Object.assign(task, { code: res.code }));
}
}
});
}
Сервер
Здесь, поскольку он имитирует сам сервер, я используюKoa
Чтобы реализовать базовый процесс, другие внутренние процессы реализации должны быть такими же.
Поскольку для push-сообщений требуется апплетaccess_token
а такжеopenid
, поэтому нам сначала нужно получить эти два параметра
Получить процесс
Получить код параметра апплета на стороне клиента
Отправить интерфейс через клиентapp/send
получить параметрыcode
function getBodyMessage(ctx) {
const { body } = ctx.request;
return body;
}
получить openid
пройти черезcode
+ secret(小程序密钥)
+ appid
Получатьopenid
function getOpenId(js_code) {
return new Promise(resolve => {
http(
{
url: `https://api.weixin.qq.com/sns/jscode2session`,
method: 'get',
qs: {
grant_type: 'authorization_code',
js_code,
appid: APP.appid,
secret: APP.secret
},
json: true //设置返回的数据为json
},
(error, response, body) => {
if (!error && response.statusCode == 200) {
resolve(body);
}
});
});
}
получить access_token
function getAccessToken() {
return new Promise(resolve => {
http(
{
url: `${WX_API}/token`,
method: 'get',
qs: {
grant_type: 'client_credential', // 注意 type 类型
appid: APP.appid,
secret: APP.secret
},
json: true //设置返回的数据为json
},
(error, response, body) => {
if (!error && response.statusCode == 200) {
const { access_token } = body;
resolve(access_token);
}
}
);
});
}
вперед новости
мы получилиopenid
а такжеaccess_token
Затем вы можете отправить сообщение пользователю
function sendMessage({ access_token, openid, msg }) {
const requestData = {
touser: openid,
template_id: APP.template_id,
// 模板消息属性和属性值需要注意内容限制
data: {
thing1: {
value: msg.taskName
},
thing10: {
value: msg.remarks
},
thing9: {
value: msg.className
}
}
};
console.log(requestData);
return new Promise((resolve, reject) => {
http(
{
// 注意 access_token 需要在接口形式传送
url: `${WX_API}/message/subscribe/send?access_token=${access_token}`,
headers: {
'content-type': 'application/json'
},
method: 'post',
body: requestData, // 需要注意是放在 body 上,而不是 form 上
json: true // 设置返回的数据为json
},
(error, response, body) => {
if (!error && response.statusCode == 200) {
resolve(body);
} else {
reject();
}
}
);
});
}
Здесь нам нужноУведомление:
-
Шаблон доставленного сообщения должен обращать внимание на ограничение содержания значения параметра сообщения о подписке.Ссылаться на
-
Выдано атрибуты сообщения шаблона
- В режиме разработки разрешить отправку сообщения за раз
- запуск бэкэнда
npm run dev
добиться эффекта
2020-03-05 Обновление
В сообщении шаблона апплета есть два шаблона
- разовая подписка
- долгосрочная подписка
Эти два шаблона различаются в зависимости от типа услуги Мини-программы, и доступны только некоторые типы услуг: выбор библиотеки шаблонов долгосрочной подписки для автономных услуг, таких как медицинское обслуживание, средства к существованию людей, транспорт и образование.
В сообществе есть статьисообщениеНекоторые различия подробно объясняются
Добро пожаловать, чтобы обратить внимание на официальный аккаунт, каждый может общаться и прогрессировать вместе.