UNPKG

@makingchatbots/genesys-cloud-chatbot-tester-cli

Version:

[![npm](https://img.shields.io/npm/v/@makingchatbots/genesys-cloud-chatbot-tester-cli)](https://www.npmjs.com/package/@makingchatbots/genesys-cloud-chatbot-tester-cli) [![Follow me on LinkedIn for updates](https://img.shields.io/badge/Follow%20for%20updat

73 lines (72 loc) 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.messageIdToConversationIdFactory = messageIdToConversationIdFactory; exports.createConversationIdGetter = createConversationIdGetter; function isGenesysError(obj) { return (obj.message !== undefined && typeof obj.message === 'string' && obj.code !== undefined && typeof obj.code === 'string' && obj.status !== undefined && typeof obj.status === 'number'); } function messageIdToConversationIdFactory({ convoApi, }) { return { async get(messageId) { const response = await convoApi.getConversationsMessageDetails(messageId); return response?.conversationId; }, async preflightCheck() { try { await convoApi.getConversationsMessageDetails('wm-tester-preflight-check'); } catch (err) { if (isGenesysError(err)) { switch (err.code) { case 'missing.any.permissions': return { ok: false, errorType: 'missing-permissions', reasonForError: err.message }; case 'not.found': return { ok: true }; default: return { ok: false, errorType: 'unknown', reasonForError: err.message }; } } return { ok: false, errorType: 'unknown', reasonForError: err.message || 'unknown error', }; } return { ok: true }; }, }; } function createConversationIdGetter(session, client) { let messageId; session.once('structuredMessage', (msg) => { messageId = msg.body.id; }); let conversationId = undefined; return async () => { if (!messageId) { return { successful: false, reason: 'not-received-message', }; } try { if (!conversationId) { conversationId = await client.get(messageId); } if (conversationId) { return { successful: true, id: conversationId }; } else { return { successful: false, reason: 'convo-id-not-in-response' }; } } catch (error) { return { successful: false, reason: 'unknown-error', error }; } }; }