fix: 复杂的模板发送

dev/mobile
Lei OT 2 years ago
parent e823c1d7c4
commit 707cc505de

@ -100,7 +100,7 @@ export const sentMsgTypeMapped = {
photo: {
type: 'image',
contentToSend: (msg) => ({
...mediaMsg.contentToSend({...msg, type: 'image'}),
...mediaMsg.contentToSend({ ...msg, type: 'image' }),
msgtype: 'image',
}),
contentToRender: (msg) => ({
@ -112,7 +112,7 @@ export const sentMsgTypeMapped = {
sticker: {
type: 'sticker',
contentToSend: (msg) => ({
...mediaMsg.contentToSend({...msg, type: 'sticker'}),
...mediaMsg.contentToSend({ ...msg, type: 'sticker' }),
msgtype: 'sticker',
}),
contentToRender: (msg) => ({
@ -151,7 +151,33 @@ export const sentMsgTypeMapped = {
}),
},
whatsappTemplate: {
contentToSend: (msg) => ({ action: 'message', actionId: msg.id, renderId: msg.id, to: msg.to, msgtype: 'template', msgcontent: { ...msg.template, components: msg.template.components.filter(com => com.type.toLowerCase() === 'body') }}), // todo: 其他组件不发送是否可以
contentToSend: (msg) => ({
action: 'message',
actionId: msg.id,
renderId: msg.id,
to: msg.to,
msgtype: 'template',
msgcontent: {
...msg.template,
components: [
...msg.template.components.filter((com) => !['footer', 'buttons', 'header'].includes(com.type.toLowerCase())),
...(msg.template.components.filter((com) => 'header' === com.type.toLowerCase()).length > 0
? msg.template.components
.filter((com) => 'header' === com.type.toLowerCase())
.map((ele) => ({ type: 'header', parameters: [{ text: ele.text, type: ele.format.toLowerCase(), [ele.format.toLowerCase()]: { link: ele.example.header_url[0] } }] }))
: []),
...(msg.template.components.filter((com) => 'buttons' === com.type.toLowerCase()).length > 0
? msg.template.components
.filter((com) => 'buttons' === com.type.toLowerCase())[0]
// .buttons.filter((btns) => ! ['phone_number', 'url'].includes( btns.type.toLowerCase()))
.buttons.filter((btns) => ! isEmpty(btns.example)) // 静态按钮不发
.map((btn, btnI) => ({ type: 'button', sub_type: btn.type.toLowerCase(), index: btnI,
// parameters: [{ text: 'lq1FTtA8', type: 'text' }]
}))
: []),
],
},
}),
contentToRender: (msg) => {
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);

Loading…
Cancel
Save