Setting Up the Environment
- Ensure you have Node.js and npm installed on your machine. This is necessary for running JavaScript outside of a browser and managing dependencies.
- Initialize a new Node.js project using the command:
npm init -y
Install Required Packages
- Use the IBM Node.js SDK to interact with Watson Assistant V2 API. Install it using npm:
npm install ibm-watson@^6.0.0
- Additionally, install the `dotenv` package to handle environment variables securely:
npm install dotenv
Create and Configure .env File
- Create a `.env` file in the root of your project. This file will store your Watson Assistant credentials as environment variables. Structure it like this:
ASSISTANT_ID=your-assistant-id
ASSISTANT_API_KEY=your-api-key
ASSISTANT_URL=https://api.eu-gb.assistant.watson.cloud.ibm.com
Set Up Watson Assistant Client
- Create a JavaScript file, for example, `watsonAssistant.js`. First, configure the environment variables in this file:
require('dotenv').config();
- Import the necessary classes from `ibm-watson`:
const AssistantV2 = require('ibm-watson/assistant/v2');
const { IamAuthenticator } = require('ibm-watson/auth');
- Initialize the Watson Assistant client:
const assistant = new AssistantV2({
version: '2021-06-14',
authenticator: new IamAuthenticator({
apikey: process.env.ASSISTANT_API_KEY,
}),
serviceUrl: process.env.ASSISTANT_URL,
});
Establish a Session
- Before sending messages to the assistant, create a session:
async function createSession() {
try {
const session = await assistant.createSession({
assistantId: process.env.ASSISTANT_ID,
});
return session.result.session_id;
} catch (error) {
console.error('Error creating session:', error);
}
}
Send a Message
- Utilize the session ID to send a message to Watson Assistant:
async function sendMessage(sessionId, messageText) {
try {
const message = await assistant.message({
assistantId: process.env.ASSISTANT_ID,
sessionId: sessionId,
input: {
'message_type': 'text',
'text': messageText,
},
});
return message.result;
} catch (error) {
console.error('Error sending message:', error);
}
}
Cleanup Resources
- Clean up sessions after interaction is complete to free resources:
async function deleteSession(sessionId) {
try {
await assistant.deleteSession({
assistantId: process.env.ASSISTANT_ID,
sessionId: sessionId,
});
} catch (error) {
console.error('Error deleting session:', error);
}
}
Putting It All Together
- Call the previously defined functions to create a session, send a message, and delete the session when done:
(async () => {
const sessionId = await createSession();
if (sessionId) {
const messageResponse = await sendMessage(sessionId, 'Hello, Watson!');
console.log(JSON.stringify(messageResponse, null, 2));
await deleteSession(sessionId);
}
})();
- This script first creates a session, sends a message, logs the assistant's response, and finally deletes the session.
Conclusion
- By following these steps, you integrate IBM Watson Assistant V2 API in a JavaScript project, enabling you to build rich AI-powered applications. Always ensure that you handle and secure your credentials and API keys responsibly.