Adding basic_messenger for PoCs with other Speech Services
This commit is contained in:
parent
909cb4b77d
commit
40487089c7
119
Integrations/Proxy Scripts/basic_messenger.js
Normal file
119
Integrations/Proxy Scripts/basic_messenger.js
Normal file
@ -0,0 +1,119 @@
|
||||
console.log(">>> basic_messenger >>>");
|
||||
console.log({ query: req.query, body: req.body });
|
||||
console.log(">>> basic_messenger >>>");
|
||||
let sessionId = req.body.previous_response_id || `resp_${uuidv4()}`;
|
||||
const input = req.body.input;
|
||||
const modelName =
|
||||
req.body.model || settings_667ef98d3ee8930a5debcbdb.nlu.modelName;
|
||||
const metadata = {
|
||||
...req.body.metadata,
|
||||
userId: req.body.sentBy?.userId,
|
||||
};
|
||||
const postBack = req.body.postBack;
|
||||
const configuration = req.body.event?.configuration;
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
const smStr = `session-map-${sessionId}`;
|
||||
const sessionMap = await redis.hGetAll(smStr);
|
||||
console.log({ smStr: smStr, sessionMap: sessionMap });
|
||||
|
||||
const recognizedData = await axios
|
||||
.post(
|
||||
`${settings_667ef98d3ee8930a5debcbdb.nlu.apiBaseURL}Model/run/${req.params.workspaceId}/${req.params.branch}/${modelName}`,
|
||||
{
|
||||
input: input,
|
||||
conversationId: sessionMap.conversationId,
|
||||
settings: settings_667ef98d3ee8930a5debcbdb.nlu.settings,
|
||||
metadata: metadata,
|
||||
postBack: postBack,
|
||||
configuration: configuration,
|
||||
}
|
||||
)
|
||||
.then((response) => {
|
||||
return response.data;
|
||||
})
|
||||
.catch((error) => {
|
||||
let errorPayload = {
|
||||
id: `resp_${uuidv4()}`,
|
||||
object: "response",
|
||||
status: "failed",
|
||||
model: modelName,
|
||||
created_at: Math.floor(Date.now() / 1000),
|
||||
error: {
|
||||
name: error.name,
|
||||
message: error.message,
|
||||
},
|
||||
};
|
||||
return errorPayload;
|
||||
});
|
||||
|
||||
console.log({
|
||||
rdCi: recognizedData.conversationId,
|
||||
sessionMap: sessionMap,
|
||||
});
|
||||
|
||||
if (recognizedData.conversationId) {
|
||||
await redis.hSet(smStr, "conversationId", recognizedData.conversationId);
|
||||
await redis.expire(smStr, 3600);
|
||||
if (sessionMap.conversationId) {
|
||||
} else {
|
||||
db.analytics.addConversation({
|
||||
id: recognizedData.conversationId,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: Additonal logic could be used to provide answer from alternative sources
|
||||
// recognizedData.answers = API_RESPONSE || ['Example'];
|
||||
if (recognizedData.tag === "ERROR") {
|
||||
} else if (
|
||||
recognizedData.classificationResults.length === 0 &&
|
||||
recognizedData.answers.length === 0
|
||||
) {
|
||||
recognizedData.answers = [
|
||||
settings_667ef98d3ee8930a5debcbdb.responses.unrecognized,
|
||||
];
|
||||
} else if (recognizedData.answers.length === 0) {
|
||||
recognizedData.answers = [
|
||||
settings_667ef98d3ee8930a5debcbdb.responses.unanswered,
|
||||
];
|
||||
}
|
||||
recognizedData._id = (
|
||||
await db.analytics.addTransaction(recognizedData)
|
||||
).insertedId;
|
||||
|
||||
// Concatenate the array of strings into a single string
|
||||
const text = recognizedData.answers.join(" ");
|
||||
|
||||
const response = {
|
||||
id: sessionId,
|
||||
object: "response",
|
||||
created_at: Math.floor(Date.now() / 1000),
|
||||
status: "completed",
|
||||
model: modelName,
|
||||
output: [
|
||||
{
|
||||
type: "message",
|
||||
id: `msg_${uuidv4()}`,
|
||||
role: "assistant",
|
||||
content: [
|
||||
{
|
||||
type: "output_text",
|
||||
text: text,
|
||||
annotations: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
res.send(response);
|
||||
} catch (error) {
|
||||
console.log(error.message);
|
||||
res.send({
|
||||
answers: ["Something went wrong. Please try again."],
|
||||
outputs: {},
|
||||
});
|
||||
}
|
||||
})();
|
||||
Loading…
x
Reference in New Issue
Block a user