chatbase-node
chatbase-node copied to clipboard
Can't send group of messages using sendMessageSet
I have the following code:
this.chatbaseMessageGroup = chatbase
.newMessageSet()
.setApiKey(this.chatbaseApiKey)
.setUserId(this.deviceId)
.setPlatform(this.platform)
.setCustomSessionId(this.sessionId)
.setIntent(this.agent.intent);
this.chatbaseUserMessage = this.chatbaseMessageGroup
.newMessage()
.setAsTypeUser()
.setMessage(this.agent.query)
.setAsHandled()
.setMessageId(this.responseId);
this.chatbaseChatbotMessage = this.chatbaseMessageGroup
.newMessage()
.setAsTypeAgent()
.setMessageId(this.responseId);
console.log('--chatbaseMessageGroup', this.chatbaseMessageGroup);
Which produce the following output:
server --chatbaseMessageGroup MessageSet {
server api_key: 'api-key',
server user_id: '311adf00-11dd-11e9-8b1a-fbc5613ee3c7',
server platform: 'web_unly',
server type: null,
server version: null,
server intent: 'GeneralFallback',
server session_id: '0bd74650-11f8-11e9-99a7-61058335dad0',
server transport_timeout: 5000,
server messages:
server [ MessageSetMessage {
server api_key: 'api-key',
server user_id: '311adf00-11dd-11e9-8b1a-fbc5613ee3c7',
server type: 'user',
server time_stamp: '1546809267025',
server platform: 'web_unly',
server message: 'AUTO_TALK',
server intent: 'GeneralFallback',
server not_handled: false,
server feedback: false,
server version: null,
server message_id: '665ef794-912f-4f45-922c-76475e22e83e',
server response_time: null,
server session_id: '0bd74650-11f8-11e9-99a7-61058335dad0',
server _state: [Object],
server transport_timeout: 5000 },
server MessageSetMessage {
server api_key: 'api-key',
server user_id: '311adf00-11dd-11e9-8b1a-fbc5613ee3c7',
server type: 'agent',
server time_stamp: '1546809267025',
server platform: 'web_unly',
server message: null,
server intent: 'GeneralFallback',
server not_handled: false,
server feedback: false,
server version: null,
server message_id: '665ef794-912f-4f45-922c-76475e22e83e',
server response_time: null,
server session_id: '0bd74650-11f8-11e9-99a7-61058335dad0',
server _state: [Object],
server transport_timeout: 5000 } ],
server _state: MessageLifecycleState { _state: { create: [Object], update: [Object] } } }
Then, I do some dynamic version
resolving:
// figure out version
this.chatbaseUserMessage.setVersion(chatbaseVersion);
this.chatbaseChatbotMessage.setVersion(chatbaseVersion);
// Send statistics to chatbase
this.chatbaseMessageGroup.sendMessageSet()
.then(set => {
logger.info(set.getCreateResponse());
})
.catch(err => {
logger.error(err);
});
But I get the following anyway:
server 2019-01-06T21:18:18.782Z [Chatbot] error: One or more required fields were not set on the message, please check the documentation on how to set the following message fields: server api_key, type, user_id, time_stamp, platform, message
Even if I provide a proper version
at the beginning, same result.
It is really not nice to have the same debug message at every try, you should consider improving the debugging DX here and let us know what's wrong exactly. It's a waste of time for everyone who tries to use this tool.
I figured it out by debugging the code: Added a console.error to pinpoint the erroring message at MessageSet.js
static extractPayloadsFromMessageSet (messages) {
var messagePayloadSet = [];
for (var i = 0; i < messages.length; i++) {
messagePayloadSet.push(messages[i].exportCreatePayload());
if (last(messagePayloadSet) instanceof Error) {
console.error('--err messages[i]', messages[i])
// return the error
return last(messagePayloadSet);
}
}
return messagePayloadSet;
}
The check that is done is basically checking that all those fields are strings:
const MSG_UPDATE_EXPORT_KEYS = ['api_key', 'message_id', 'intent', 'feedback', 'version'];
In my case, the message
field was null in the message that was the agent response.