模板消息: body: 发送参数填充后的整体内容

dev/chat
Lei OT 2 years ago
parent d604f4ebf1
commit 591969be40

@ -88,7 +88,7 @@ export const fetchTemplates = async () => {
const data = await fetchJSON(`${API_HOST}/listtemplates`); const data = await fetchJSON(`${API_HOST}/listtemplates`);
const canUseTemplates = (data?.result?.items || []) const canUseTemplates = (data?.result?.items || [])
.filter((_t) => _t.status !== 'REJECTED') .filter((_t) => _t.status !== 'REJECTED')
.map((ele) => ({ ...ele, components: groupBy(ele.components, (_c) => _c.type.toLowerCase()) })); .map((ele) => ({ ...ele, components_origin: ele.components, components: groupBy(ele.components, (_c) => _c.type.toLowerCase()) }));
return canUseTemplates; return canUseTemplates;
}; };

@ -33,8 +33,8 @@ export const sentMsgTypeMapped = {
contentToRender: (msg) => { contentToRender: (msg) => {
console.log(msg); console.log(msg);
const templateDataMapped = msg.template?.components ? msg.template.components.reduce((r, v) => ({...r, [v.type]: v}), {}) : null; const templateDataMapped = msg.template?.components ? msg.template.components.reduce((r, v) => ({...r, [v.type]: v}), {}) : null;
const templateParam = (templateDataMapped?.body?.parameters || []).map(e => e.text); // const templateParam = (templateDataMapped?.body?.parameters || []).map(e => e.text);
const fillTemplate = templateParam.length ? replaceTemplateString(msg.template_origin.components.body?.[0]?.text || '', templateParam) : (msg.template_origin.components.body?.[0]?.text || ''); // const fillTemplate = templateParam.length ? replaceTemplateString(msg.template_origin.components.body?.[0]?.text || '', templateParam) : (msg.template_origin.components.body?.[0]?.text || '');
// const footer = msg.template_origin.components?.footer?.[0]?.text || ''; // const footer = msg.template_origin.components?.footer?.[0]?.text || '';
return { return {
...msg, ...msg,
@ -42,7 +42,7 @@ export const sentMsgTypeMapped = {
conversationid: msg.id.split('.')[0], conversationid: msg.id.split('.')[0],
type: 'text', type: 'text',
title: msg.template_origin.components.header?.[0]?.text || '', title: msg.template_origin.components.header?.[0]?.text || '',
text: `${fillTemplate}`, // msg.template_origin.components.body?.[0]?.text || '', text: templateDataMapped?.body?.text || '', // msg.template_origin.components.body?.[0]?.text || '',
}; };
}, },
}, },
@ -171,6 +171,14 @@ export const whatsappMsgTypeMapped = {
// 'contact-card': 'contact-card', // 'contact-card': 'contact-card',
// 'contact-card-with-photo': 'contact-card-with-photo', // 'contact-card-with-photo': 'contact-card-with-photo',
// 'contact-card-with-photo-and-label': 'contact-card-with-photo-and-label', // 'contact-card-with-photo-and-label': 'contact-card-with-photo-and-label',
template: {
type: 'text',
data: (msg) => {
const templateDataMapped = msg.template?.components ? msg.template.components.reduce((r, v) => ({...r, [v.type]: v}), {}) : null;
console.log(msg.template.name, templateDataMapped);
return { id: msg.wamid, text: templateDataMapped?.body?.parameters?.[0]?.text || '', title: msg.template.name }
},
},
}; };
/** /**
* render received msg * render received msg
@ -200,12 +208,18 @@ export const parseRenderMessageList = (messages, conversationid = null) => {
return { return {
...(whatsappMsgTypeMapped?.[msgType]?.data(msgContent) || {}), ...(whatsappMsgTypeMapped?.[msgType]?.data(msgContent) || {}),
type: msgContent.type, type: msgContent.type,
sender: msg.msg_direction === 'outbound' ? 'me' : msgContent.from, ...(typeof whatsappMsgTypeMapped[msgType].type === 'function' ? whatsappMsgTypeMapped[msgType].type(msg) : { type: whatsappMsgTypeMapped[msgType].type || 'text' }),
// title: msg.customerProfile.name,
date: msgContent?.sendTime || msg.msgtime || '', date: msgContent?.sendTime || msg.msgtime || '',
sender: msgContent.from,
...(msg.msg_direction === 'outbound'
? {
sender: 'me',
status: msgStatusRenderMapped[msgContent?.status || 'failed'],
dateString: msgStatusRenderMapped[msgContent?.status || 'failed'] === 'failed' ? '发送失败 ❌' : '',
}
: {}),
// conversationid: conversationid, // conversationid: conversationid,
status: msg.msg_direction === 'outbound' ? msgStatusRenderMapped[(msgContent?.status || 'failed')] : '', // title: msg.customerProfile.name,
dateString: msgStatusRenderMapped[(msgContent?.status || 'failed')] === 'failed' ? '发送失败 ❌' : '',
}; };
}); });
}; };
@ -214,7 +228,8 @@ export const parseRenderMessageList = (messages, conversationid = null) => {
* WhatsApp Templates params * WhatsApp Templates params
*/ */
export const whatsappTemplatesParamMapped = { export const whatsappTemplatesParamMapped = {
// 'asia_highlights_has_receive_your_inquiry': [['customer_name']], /** @deprecated */
'asia_highlights_has_receive_your_inquiry': [['customer_name']],
'hello_from_asia_highlights': [['agent_name']], // todo: 'hello_from_asia_highlights': [['agent_name']], // todo:
'hello_from_china_highlights': [['agent_name']], // todo: 'hello_from_china_highlights': [['agent_name']], // todo:
'use_new_whatsapp': [['agent_name']], // todo: 'use_new_whatsapp': [['agent_name']], // todo:

@ -7,7 +7,7 @@ import { useAuthContext } from '@/stores/AuthContext';
import { LikeOutlined, MessageOutlined, StarOutlined, SendOutlined, PlusOutlined, PlusCircleOutlined } from '@ant-design/icons'; import { LikeOutlined, MessageOutlined, StarOutlined, SendOutlined, PlusOutlined, PlusCircleOutlined } from '@ant-design/icons';
import { cloneDeep, getNestedValue, isEmpty } from '@/utils/utils'; import { cloneDeep, getNestedValue, isEmpty } from '@/utils/utils';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { whatsappTemplatesParamMapped, sentMsgTypeMapped } from '@/lib/msgUtils'; import { whatsappTemplatesParamMapped, sentMsgTypeMapped, replaceTemplateString } from '@/lib/msgUtils';
const InputBox = () => { const InputBox = () => {
const { loginUser } = useAuthContext(); const { loginUser } = useAuthContext();
@ -21,6 +21,7 @@ const InputBox = () => {
const invokeSendMessage = (msgObj) => { const invokeSendMessage = (msgObj) => {
console.log('sendMessage------------------', msgObj); console.log('sendMessage------------------', msgObj);
const contentToSend = sentMsgTypeMapped[msgObj.type].contentToSend(msgObj); const contentToSend = sentMsgTypeMapped[msgObj.type].contentToSend(msgObj);
console.log('content to send-------------------------------------', contentToSend);
websocket.sendMessage({ ...contentToSend, opi_sn: userId, coli_sn: currentConversation.coli_sn }); websocket.sendMessage({ ...contentToSend, opi_sn: userId, coli_sn: currentConversation.coli_sn });
const contentToRender = sentMsgTypeMapped[msgObj.type].contentToRender(msgObj); const contentToRender = sentMsgTypeMapped[msgObj.type].contentToRender(msgObj);
console.log(contentToRender, 'contentToRender sendMessage------------------'); console.log(contentToRender, 'contentToRender sendMessage------------------');
@ -57,26 +58,38 @@ const InputBox = () => {
template: { template: {
name: fromTemplate.name, name: fromTemplate.name,
language: { code: fromTemplate.language }, language: { code: fromTemplate.language },
...(fromTemplate.components.body[0]?.example?.body_text?.[0]?.length > 0 components: fromTemplate.components_origin.map(citem => {
? { const params = whatsappTemplatesParamMapped[fromTemplate.name].map((v) => ({ type: 'text', text: getNestedValue(_conversation, v) || '' }));
components: [ const paramText = params.map((p) => p.text);
{ const fillTemplate = paramText.length ? replaceTemplateString(citem?.text || '', paramText) : citem?.text || '';
'type': 'body',
'parameters': whatsappTemplatesParamMapped[fromTemplate.name].map((v) => ({ type: 'text', text: getNestedValue(_conversation, v) || '' })), return {
// [ type: citem.type.toLowerCase(),
// { parameters: params,
// 'type': 'text', text: fillTemplate,
// 'text': getNestedValue(_conversation, whatsappTemplatesParamMapped[fromTemplate.name][0]) , };
// }, }),
// { // debug: // ...(fromTemplate.components.body[0]?.example?.body_text?.[0]?.length > 0
// 'type': 'text', // ? {
// 'text': getNestedValue(_conversation, whatsappTemplatesParamMapped[fromTemplate.name]?.[1] || whatsappTemplatesParamMapped[fromTemplate.name][0]) , // components: [
// }, // {
// ], // 'type': 'body',
}, // 'text': fromTemplate.components.body[0]?.text,
], // 'parameters': whatsappTemplatesParamMapped[fromTemplate.name].map((v) => ({ type: 'text', text: getNestedValue(_conversation, v) || '' })),
} // // [
: {}), // // {
// // 'type': 'text',
// // 'text': getNestedValue(_conversation, whatsappTemplatesParamMapped[fromTemplate.name][0]) ,
// // },
// // { // debug:
// // 'type': 'text',
// // 'text': getNestedValue(_conversation, whatsappTemplatesParamMapped[fromTemplate.name]?.[1] || whatsappTemplatesParamMapped[fromTemplate.name][0]) ,
// // },
// // ],
// },
// ],
// }
// : {}),
}, },
template_origin: fromTemplate, template_origin: fromTemplate,
}; };

Loading…
Cancel
Save