@shoopi/whatsapp-cloud-api
v0.0.3
Published
Unofficial package wrapper for WhatsApp Cloud Api
Downloads
7
Readme
WhatsApp Cloud Api
This is an unofficial package for the WhatsApp Cloud Api, the project still under development.
Requirements
- Access to the Cloud Api, you can read more here
- A Redis server can download and remember use the command
redis-stack-server
to start it localy - Subscribed to the
message
webhook read more here
Installation
Install Whatsapp Cloud Api with npm
npm install @shoopi/whatsapp-cloud-api
Environment Variables
To run this project, you will need to add the following environment variables to your .env file
| Parameter | Description | Required |
| :------------- | :----------------------------------------- | :------- |
| ACCESS_TOKEN
| Temporal o permanent WhatsApp Access token | ✅ |
| VERIFY_TOKEN
| Any secret string | ✅ |
| WEBHOOK_PORT
| The port to start the webhook | |
environment
=DEV
Will connect to the default local redis server
If you are using online redis server need to add those environment variables
REDIS_PORT
REDIS_USERNAME
REDIS_PASSWORD
Usage/Examples
import WhatsappCloudApi from "@shoopi/whatsapp-cloud-api";
import templates from "./templates.json";
import rules from "./rules.json";
function main() {
new WhatsappCloudApi({
templates: templates,
rules: rules,
});
}
main();
When use the discord bot have to add this environment variables
| Parameter | Description | Required |
| :----------------------- | :-------------------------------------- | :------- |
| DISCORD_TOKEN
| The discord bot token | ✅ |
| DISCORD_CLIENT
| The discord bot client | ✅ |
| DISCORD_GUILD_ID
| The server where the bot will work | ✅ |
| DISCORD_QUEUE_CHANNEL
| The channel to send request to chat | ✅ |
| DISCORD_CHATS_CATEGORY
| By default will take the parent channel | |
Discord bot middleware for whatsapp cloud api
import DiscordPlugin from "@shoopi/whatsapp-cloud-api-plugin-discord";
import WhatsappCloudApi from "@shoopi/whatsapp-cloud-api";
import templates from "./templates.json";
import rules from "./rules.json";
function main() {
const discordbot = DiscordPlugin.getInstance();
discordbot.init();
new WhatsappCloudApi({
templates: templates,
rules: rules,
middlewares: [discordbot.getMiddleware()],
});
}
main();
Template and Rules
To start the bot you need two params template
and rules
those can be a .json or variable but need to follow this structure
template
{
"default_unknow_response":{
"type":"text",
"text":{
"body":"Please select a valid option."
}
},
"welcome_menu":{
"type":"interactive",
"interactive":{
"type":"button",
"header":{
"type":"text",
"text":"This is the header"
},
"body":{
"text":"This is the body of your message"
},
"action":{
"buttons":[
{
"type":"reply",
"reply":{
"id":"button-one-id",
"title":"Button one"
}
},
{
"type":"reply",
"reply":{
"id":"button-two-id",
"title":"Button two"
}
},
{
"type":"reply",
"reply":{
"id":"button-three-id",
"title":"Button three"
}
}
]
}
}
},
"response_one":{
"type":"text",
"text":{
"body":"This is a response for the first button"
}
},
"response_two":{
"type":"text",
"text":{
"body":"This is a response for the second button"
}
},
"response_three":{
"type":"text",
"text":{
"body":"This is a response for the third button"
}
},
"response_trigger":{
"type":"text",
"text":{
"body":"This is a response for the trigger"
}
},
"template_message":{
"type":"template",
"template":{
"name":"sample_shipping_confirmation",
"language":{
"code":"en"
},
"components":[
{
"type":"body",
"parameters":[
{
"type":"text",
"text":"1"
}
]
}
]
}
}
}
The template need at least welcome_menu
and default_unknow_response
Read the full documentation of all message type.
rules
[
{
"type":"interactive",
"button_id":"button-one-id",
"context":"user_request_information",
"expected_response":{
"type":"interactive"
},
"response":{
"id":"response_one"
}
},
{
"type":"interactive",
"button_id":"button-two-id",
"context":"user_request_information",
"expected_response":{
"type":"interactive"
},
"response":{
"id":"response_two"
}
},
{
"type":"interactive",
"button_id":"button-three-id",
"context":"user_request_information",
"expected_response":{
"type":"text"
},
"response":{
"id":"response_three"
}
},
{
"type":"text",
"triggers":[
"this",
"trigger",
"i",
"some"
],
"context":"user_request_information",
"expected_response":{
"type":"text"
},
"matchs":2,
"response":{
"id":"response_trigger"
}
}
]
The type
can be:
text
image
location
interactive
template
If the type is interactive
and expect a button you have to pass the button_id
The context
accept those types and can use whatever you want:
unknow
welcome
waiting_for_action
waiting_for_information
user_request_information
waiting_to_talk_with_human
talking_with_human
When use the triggers
pass the array of words to trigger that rule and can set the numbers of matchs
the default is 1
Roadmap
Image support
Location suport
Document support
Contact support
Contributing
Contributions are always welcome!
Feedback
If you have any feedback, please reach out to us at [email protected]