#smooch #supportkit
Вопрос:
Я автоматически отвечаю на предопределенное приветственное сообщение пользователю, когда он публикует сообщение через страницу fb или WhatsApp. Я хочу, чтобы, если пользователь уже существует в sunshine, то не отвечал этому пользователю, а отвечал им приветственным сообщением. Как я могу проверить, существует ли пользователь уже? «используйте строгий»;
// Imports
`enter code here`const express = require('express');
const bodyParser = require('body-parser');
const SunshineConversationsApi = require('sunshine-conversations-client');
var request = require('request')
// Config
let defaultClient = SunshineConversationsApi.ApiClient.instance;
let basicAuth = defaultClient.authentications['basicAuth'];
basicAuth.username = 'app_XXXXXXX';
basicAuth.password = 'XXXXXXXXXXXXXXXXX-bSwG85aM8qldJzTt4rgZlf_XQukWKE8ADMno85g';
const PORT = 5050;
const apiInstance = new SunshineConversationsApi.MessagesApi()
// Server https://expressjs.com/en/guide/routing.html
const app = express();
app.use(bodyParser.json());
// Expose /messages endpoint to capture webhooks
https://docs.smooch.io/rest/#operation/eventWebhooks
app.post('/messages', function(req, res) {
console.log('webhook PAYLOAD:n',
JSON.stringify(req.body.events[0].payload.conversation.id, null, 4));
const appId = req.body.app.id;
const trigger = req.body.events[0].type;
// Call REST API to send message https://docs.smooch.io/rest/#operation/postMessage
if (trigger === 'conversation:message') {
const authorType = req.body.events[0].payload.message.author.type;
const displayName=req.body.events[0].payload.message.author.displayName;
if(authorType === 'user'){
const conversationId = req.body.events[0].payload.conversation.id;
console.log(conversationId);
console.log(displayName);
check_conversation_ID_with_sunshine(appId,conversationId);
//sendMessage(appId, conversationId);
res.end();
}
}
});
// Listen on port
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
});
async function sendMessage(appId, conversationId){
let messagePost = new SunshineConversationsApi.MessagePost();
messagePost.setAuthor({type: 'business'});
messagePost.setContent({type: 'text', text: 'Thanks boy'});
let response = await apiInstance.postMessage(appId, conversationId, messagePost);
//console.log('API RESPONSE:n', response);
}
Ответ №1:
Таким образом, [простой] общий процесс может быть:
- Приходит сообщение пользователя (включая идентификатор пользователя и идентификатор беседы)
- извлеките диалог пользователя
if len(response['messages']) == 1
(сообщения в разговоре)- отправить приветственное сообщение
- (иначе нет-оп)
Предостережение заключается в том, что вы можете получить ложноотрицательные результаты, если пользователи отправят несколько сообщений в быстрой последовательности в самом начале (вместо одного).
Некоторые безопасные способы сделать это состояли бы в том, чтобы либо:
- найдите приветственное сообщение в начале собрания (второе сообщение?)
- т. е. повторите [первые несколько]
response['messages']
, проверяя текст/метаданные каждого из них
- т. е. повторите [первые несколько]
- при отправке приветственного сообщения добавьте флаг метаданных в разговор (например:
metadata.['welcomeSent']: True
), найдите этот флаг для возвращающихся пользователей
Ссылки на документы
Получать сообщения от собеседника
- страница документа: https://docs.smooch.io/rest/#operation/listMessages
- конечная точка:
https://api.smooch.io/v2/apps/{appId}/conversations/{conversationId}/messages
- аутентификация: Базовая и т.д.
- полезная нагрузка: <нет>
- полезная нагрузка для ответа:
{messages:[...], meta:{...}, links:{}}
Комментарии:
1. @сайед ответил ли это на ваш вопрос?