Чтобы получить доступ к обслуживанию клиентов из апплета, нам нужно вызвать функцию обслуживания клиентов WeChat. Очень просто, просто нужно использовать на странице<button open-type="contact" />
Может отображаться кнопка «Войти в сеанс обслуживания клиентов».
Затем мы можем войти на страницу обслуживания клиентов веб-версии общедоступной платформы WeChat, чтобы ответить на всевозможные странные вопросы.
Но есть проблема, как сделать автоматический ответ?
Затем вам нужно использовать свой собственный сервер для запроса услуг через WeChat для завершения этой работы.Руководство по доступу · Мини-программаПрилагается довольно краткое руководство по доступу к официальному веб-сайту.
First
Заполните схему конфигурации сервера:
При заполнении здесь нам нужно написать в фоновом режимеget
Запросить проверку.
Официальный предоставляет очень лаконичный php-код. . Это довольно дерьмово.
Здесь я используюexpress
Написано для примера
function checkSignature(params) {
var key = [params.token, params.timestamp, params.nonce].sort().join('');
var sha1 = crypto.createHash('sha1');
sha1.update(key);
return sha1.digest('hex') === params.signature;
}
app.get('/wxlalalala', function(req, res, next) {
let token = 'xxxxx'; // 填写服务器配置上所填的token
let isCheck = checkSignature({
signature: req.query.signature,
timestamp: req.query.timestamp,
nonce: req.query.nonce,
token: token,
});
req.body = req.query.echostr;
res.send(req.body);
return req.body;
});
Итак, мы завершили самый ответственный шаг. После этого можно написать логику, что мы будем автоматически реагировать на то, что присылает заказчик.
Second
Когда мы принимаем сообщения и события от клиентов, нам всем нужно принимать их через почту.
Конечно, сначала нам нужно получитьaccess_token
. Без этого мы ничего не можем сделать.
На последний официальный сайт:Учетные данные вызова API · апплет, но примера кода нет, забудьте сами.
Следующий собственный код:
let access_token = '';
const getAccessToken = function() {
if (access_token !== '') {
return access_token;
}
let URL =
'https://api.weixin.qq.com/cgi-bin/token?grant_type= client_credential&appid=xxxx&secret=sssss'; // grant_type一定要填client_credential.
let options = {
method: 'GET',
url: URL,
};
return new Promise((resolve, reject) => {
request(options, function(err, res, body) {
if (res) {
access_token = JSON.parse(body).access_token;
let expires_in = parseInt(JSON.parse(body).expires_in) - 10;
setTimeout(() => {
access_token = '';
//getAccessToken();
}, expires_in * 1000);
resolve(access_token);
} else {
reject(err);
}
});
});
};
Поскольку срок действия маркера составляет 7200 с, он существует в памяти.
Хорошо, это у нас естьaccess_token
Может сделать автоматический ответ обслуживания клиентов!
Third
Вот еще один документ для официальной службы поддержки клиентов, чтобы отправить сообщение:Отправить сообщение в службу поддержки клиентов Мини-программа, обнаружил, что это бесполезно. . . Или напишите сами. . Ведь такой скудный документ. . Т Т. Тогда напиши ответ на смс! Другие похожи на свои собственные расширения.
const postJson = function(param) {
var options = {
url: param.url,
method: 'POST',
body: param.body,
json: true,
};
request(options, function callback(error, response, data) {
if (!error && response.statusCode == 200) {
param.success(response.errcode);
} else {
param.error(error);
}
});
};
async function sendTextMessage(content, data, access_token) {
await postJson({
url:
'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' +
access_token,
body: {
touser: data.FromUserName,
msgtype: 'text',
text: {
content: content,
},
},
success: function(res) {
console.log(res, 'send successed!1');
},
error: function(err) {
console.log(err);
},
});
}
Last
Функция ответа также была написана.В конце, в соответствии с сообщением, отправленным клиентом, мы ответим на сообщение как умное обслуживание клиентов! Нечего сказать, сразу к коду. документация. . . Даже если вы можете только смотреть на параметры или что-то в этом роде. . ПриветМини-программа новостей службы поддержки клиентов
app.post('/wxlalallala', (req, res, next) => {
let token = 'xxxxx';// 填写服务器配置那的token
let reqBody = req.body;
let isCheck = checkSignature({
signature: req.query.signature,
timestamp: req.query.timestamp,
nonce: req.query.nonce,
token: token,
});
if (isCheck) {
let welcome= '欢迎';
switch (reqBody.MsgType) {
case 'text': {
//文本消息
sendTextMessage('您好,【'+reqBody.Content+'】是未知命令,已转发给人工处理。\n'+welcomeTips, reqBody, getAccessToken());
break;
}
case 'image': {
//用户在客服会话中发送图片消息
sendImageMessage('xxxxxxx', reqBody, getAccessToken());
break;
}
case 'event': {
sendTextMessage(welcome, reqBody, getAccessToken());
break;
}
default:
break;
}
}
res.send('success');
next();
res.end();
});
完成啦愉快的使用自动客服回复! !