Hooks Conversaciones

En esta sección tendremos un pantallazo de los hooks enviados a Suricata en la última versión (3.0).

Entrantes


  const WEBHOOKURL_INTEGRATION_SURICATA = 'urlSuricataIntegration'
  const merchantName = 'merchantName'

  let urlMedia

  let data = {
    externalId: event?.conversationId,
    merchant: merchantName,
    content: {
      action: 'messageUserBot',
      direction: event?.integration?.includes('suricata') ? 'outgoing' : event?.direction,
      eventId: event?.id,
      fullName: event?.state?.user?.first_name || event?.state?.user?.nameUser || null,
      source: event?.state?.user?.sienna_source ?? 1,
      whatsapp: event?.state?.user?.phone || undefined,
      payload: {
        type: event?.type,
        attachment: undefined,
        text: event?.payload?.text,
        tags: event?.integration?.includes('suricata')
          ? {
              extra1: event?.tags?.message['suricata/suricata-meerkat:extra1'] ?? '',
              extra2: event?.tags?.message['suricata/suricata-meerkat:extra2'] ?? '[email protected]',
              extra3: event?.tags?.message['suricata/suricata-meerkat:extra3'] ?? 'Agente Humano'
            }
          : {},
        ...event?.payload
      }
    },
    alarm: {
      ticketId: event?.state?.user?.last_ticket ?? undefined,
      direction: event?.integration?.includes('suricata') ? 'agent' : 'user'
    }
  }

  if (['video', 'audio', 'image', 'file'].includes(event?.type)) {
    console.log(['[Type]:', event.type])
    const property = Object.keys(event?.payload)[0]
    urlMedia = event?.payload[property]
  }

  if (urlMedia) {
    try {
      const urlAttach = `${WEBHOOKURL_INTEGRATION_SURICATA}/uploadFileToSuricata`
      const { data: urlAttached } = await axios.post(urlAttach, { urlMedia }, { timeout:25000 })

      data.content.payload.attachment = urlAttached?.url ?? undefined
    } catch (err) {
      console.log('[LOG.INCOMING]: Error al subir attachment', { urlMedia })
      console.error({ ErrMessage: err.message })
    }
  }

  try {
    await axios.post(`https://backend.suricata.chat/v2/${merchantName}/chats`, data, { timeout:25000 })
  } catch (err) {
    console.log('[LOG.INCOMING]: Error al fetch API History', { payload: data })
    console.log('[LOG.INCOMING]: Details', { body: err?.response?.data })
    console.error({ ErrMessage: err.message })
  }

Salientes

Last updated