在本文中,将使用JavaScript和Node构建一个应用程序.js其中将使用Zenvia平台实现一个简单的聊天机器人,以与WhatsApp通道集成,并将AudD平台与音乐识别集成,以测试WhatsApp通道的某些功能,例如发送和接收文本,图像和音频消息。
WhatsApp移动应用程序的第一个版本于2009年11月发布,专门用于iOS,并于2010年8月发布用于Android。
Facebook在2014年以160亿美元收购了WhatsApp,根据2018年发布的最新数据,该应用程序在Google Play上的安装量超过50亿,每月在线用户超过15亿。
为了与世界各地的小型,中型和大型公司进行高效通信,WhatsApp于2018年8月推出了WhatsApp Business API,提供了一个API来发送和接收消息,可以通过您的合作伙伴与企业系统集成,而Zenvia是Facebook的官方合作伙伴。
ngrok 是一种服务,它公开了在 Internet 上本地运行的应用程序。
1. 让我们创建帐户。我们将访问该网站 https://ngrok.com/,然后单击“注册”按钮。
2.现在我们将填写名称,电子邮件,密码字段,单击“我不是机器人”,然后单击“注册”按钮。您也可以使用GitHub或Google社交登录登录。
3.接下来,我们将复制带有身份验证令牌的命令,因为此命令将在安装后配置。
4. 准备就绪!您的帐户已创建。
ngrok 工具将为本地运行的应用程序创建一个隧道,并在 Internet 上提供 URL。
1. 让我们安装并配置 ngrok。我们将访问站点 https://ngrok.com/download 并下载适用于您的操作系统的安装文件。
2.现在我们将提取并安装下载的文件。我正在使用openSUSE Tumbleweed操作系统,我只是将其解压缩到文件夹中。/usr/local/bin/
3. 安装 ngrok 后,我们将配置身份验证令牌。在我的情况下,我在终端中运行了以下命令。
ngrok config add-authtoken 1Rmtob9M3s7nNw02x2w72hSY0C6_5aa3v6udPVT6Gfjb51omJ注意:
4. 现在,我们将在端口上创建隧道,该隧道将成为应用程序的端口。在我的情况下,我在终端中运行了以下命令。3000
ngrok http 3000
5. 准备就绪!ngrok工具已配置,并将在终端中显示可在互联网上访问的公共URL。https://4402-2804-1b3-a8c3-b00f-8119-68d3-7e21-33e1.ngrok.io
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 1 hour, 59 minutes
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://4402-2804-1b3-a8c3-b00f-8119-68d3-7e21-33e1.ngrok.io -> http://localhost:3000
Forwarding https://4402-2804-1b3-a8c3-b00f-8119-68d3-7e21-33e1.ngrok.io -> http://localhost:3000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
注意:
Zenvia是一个平台,使公司能够通过SMS,WhatsApp,Voice,Facebook Messenger,WEB Chat和RCS渠道为其客户创造独特的通信体验。
1. 让我们创建帐户。我们将访问该网站 https://app.zenvia.com,然后单击链接创建您的帐户。
2.现在我们将填写字段 名称,电子邮件,密码,单击选项 我不是机器人,然后单击按钮 创建帐户.
3.创建帐户后,我们将检查注册的电子邮件。
4.现在我们将单击按钮 是的,这是我!在发送的电子邮件中确认它:)。
5.确认电子邮件后,我们将填写“电子邮件”字段,然后单击“下一步”按钮。
6.现在我们将填写“密码”字段,然后单击按钮 登录.
7.接下来,我们将填写输入您的电话号码字段,然后单击按钮 继续 验证您的电话号码。
8.现在,我们将填写字段 输入您在手机上收到的代码的6位数代码,然后单击按钮 继续.
9. 准备就绪!您的帐户已创建。
沙盒是开发人员中非常流行的概念,可以在不雇用服务的情况下测试平台的某些功能。因此,它需要直观且没有官僚主义。
1. 让我们在 WhatsApp 频道中创建沙盒。我们将单击菜单开发人员和沙盒。
2.现在我们将单击按钮 创建新。
3.接下来,我们将选择选项 WhatsApp 然后点击按钮 下一页.
4.选择WhatsApp选项后,我们将扫描QR码或使用您的WhatsApp应用程序将关键字发送到该号码。另一种选择是使用手机访问URL,因为WhatsApp应用程序将打开,并显示要发送到号码的消息。wobbly-chatter+551148377404https://wa.me/551148377404?text=wobbly-chatterwobbly-chatter551148377404
笔记:
5. 您将在手机上收到一条消息,确认您的号码已注册。
6. 屏幕上将显示已注册的号码,以及 24 小时内 200 条消息的限制。现在我们将单击按钮 下一步.
注意:
7. 注册号码后,我们将测试发送短信。在“收件人”字段中选择要发送的号码,在“消息”字段中填写消息,然后单击“发送消息”按钮。复制参数中的令牌,在我的情况下,生成令牌是因为将在 Node.js 应用程序中配置此令牌。点击按钮 下一页.X-API-TOKENUbH-3NSJMufN0VN5fejawn633zDGnXRiRhYI
笔记:
8. 接下来,将测试消息发送到所选号码。
9. 现在,我们将使用在 ngrok 平台上创建的 URL 创建对 webhook 的订阅。我们将用 URL 填写消息 Webhook URL 字段,并使用 URL 填写状态 Webhook URL 字段,然后单击“保存”和“完成”按钮。https://4402-2804-1b3-a8c3-b00f-8119-68d3-7e21-33e1.ngrok.io/messagehttps://4402-2804-1b3-a8c3-b00f-8119-68d3-7e21-33e1.ngrok.io/status
10. 准备就绪!为WhatsApp频道创建的沙盒,配置的数量和生成的令牌。API 文档可在 https://zenvia.github.io/zenvia-openapi-spec/ 获得。
AudD是一项服务,允许您使用API识别音乐。
1. 让我们创建帐户。我们将访问该网站 https://audd.io,然后单击“获取API令牌”按钮。
2.现在我们将单击链接 注册.
3.接下来,我们将填写“电子邮件地址”字段,输入上面显示的代码,然后单击按钮 继续.您还可以使用Telegram,Google或GitHub社交登录登录。
4.然后,我们将填写“密码”字段,然后单击按钮 继续。
5.创建帐户后,我们将检查注册的电子邮件。我们将单击发送的电子邮件中的“确认我的帐户”按钮。
6.现在,我们将单击按钮复制生成的令牌,因为此令牌将在Node.js应用程序中配置。
7. 准备就绪!您的帐户已创建并生成令牌。API 文档可在 https://docs.audd.io/ 上找到。
Node.js是开源的跨平台软件,可在服务器上运行JavaScript代码。它基于Google的V8 JavaScript解释器。
1. 让我们创建应用程序。我们将创建应用程序文件夹。
mkdir chatbot-whatsapp
cd chatbot-whatsapp
2.现在我们将创建文件 。该选项允许创建文件,而无需考虑应用程序名称,版本等问题。package.json-y
npm init -y
3. 接下来,我们将安装依赖项 、 、 和 。dotenvexpressgot@zenvia/sdk
npm install dotenv express got @zenvia/sdk
4.安装依赖项后,我们将创建文件 。.env
touch .env
5.现在,我们将在文件中添加在Zenvia和AudD平台上创建的令牌,如下所示。.env
ZENVIA_TOKEN=gSTuqxR2rsXY-UJGzdXFMWv-uvp7DKPtGLzq
AUDD_TOKEN=311207449541d9dbd7f7bc9a52680e57
接下来,我们将创建文件夹并在文件夹内创建文件 。srcindex.jssrc
mkdir src
touch src/index.js
7.创建文件夹和文件后,我们将在文件中添加下面的内容,其中在收到消息时,应用程序将发送一条消息,其中包含内容测试。src/index.js
const dotenv = require('dotenv');
const { Client, TextContent, WebhookController } = require('@zenvia/sdk');
dotenv.config();
const client = new Client(process.env.ZENVIA_TOKEN);
const whatsapp = client.getChannel('whatsapp');
const webhook = new WebhookController({
messageEventHandler: (messageEvent) => {
console.log('Message event:', messageEvent);
const content = new TextContent('Tested');
whatsapp.sendMessage(messageEvent.message.to, messageEvent.message.from, content)
.then(response => {
console.log('Response:', response);
});
},
channel: 'whatsapp',
});
webhook.on('listening', () => {
console.log('Webhook is listening');
});
webhook.init();
8.现在我们将使用以下命令运行应用程序。
node src/index.js
9. 接下来,我们将测试与Zenvia平台的集成。我们将使用注册的手机发送测试消息。您应该会收到包含“已测试”内容的消息。
10.创建并测试短信的发送和接收后,我们将更改文件的内容以改进应用程序,搜索音乐识别并发送音频和图像类型的内容。src/index.js
const dotenv = require('dotenv');
const got = require('got');
const FormData = require('form-data');
const { Client, FileContent, TextContent, WebhookController } = require('@zenvia/sdk');
dotenv.config();
const client = new Client(process.env.ZENVIA_TOKEN);
const whatsapp = client.getChannel('whatsapp');
const webhook = new WebhookController({
channel: 'whatsapp',
messageEventHandler: async (messageEvent) => {
let content = [new TextContent('Tested')];
if (messageEvent.message.contents[0].type === 'file' && messageEvent.message.contents[0].fileMimeType.includes('audio')) {
const music = await recognizeMusic(messageEvent.message.contents[0].fileUrl);
if (music) {
let text = '';
if (music.artist) {
text = `${text}Artist: *${music.artist}*
`;
}
if (music.title) {
text = `${text}Title: *${music.title}*
`;
}
if (music.album) {
text = `${text}Album: *${music.album}*
`;
}
content = [new TextContent(text)];
if (music.deezer && music.deezer.picture) {
content.push(new FileContent(music.deezer.picture, 'image/jpeg'));
}
if (music.deezer && music.deezer.preview) {
content.push(new FileContent(music.deezer.preview, 'audio/mpeg'));
}
} else {
content = [new TextContent('Could not identify the music from the audio.')];
}
}
whatsapp.sendMessage(messageEvent.message.to, messageEvent.message.from, ...content)
.then((response) => {
console.debug('Response:', response);
});
},
});
webhook.on('listening', () => {
console.info('Webhook is listening');
});
webhook.init();
const recognizeMusic = async (url) => {
const form = new FormData();
form.append('api_token', process.env.AUDD_TOKEN);
form.append('url', url);
form.append('return', 'deezer');
const response = await got.post('https://api.audd.io/', {
body: form,
responseType: 'json',
resolveBodyOnly: true,
});
if (response && response.result) {
return {
artist: response.result.artist,
title: response.result.title,
album: response.result.album,
deezer: {
picture: response.result.deezer && response.result.deezer.artist ? response.result.deezer.artist.picture_medium : undefined,
preview: response.result.deezer ? response.result.deezer.preview : undefined,
},
};
}
};
11.现在,我们将使用以下命令再次运行该应用程序。
node src/index.js
12. 接下来,我们将测试与Zenvia和AudD平台的集成。我们将发送音乐的音频。我们将单击并按住按钮 录制5秒钟的音乐。
13.发送音乐的音频后,应用程序将接收音频文件,搜索音乐识别,如果音乐被识别,应用程序将发送一条文本消息,其中包含艺术家,标题和专辑等音乐信息以及另外两个带有30秒音乐的图像和音频消息。
14. 准备就绪!我们使用手机和音乐识别来测试该应用程序,以发送和接收文本,图像和音频消息。
应用程序存储库可在 https://github.com/rodrigokamada/chatbot-whatsapp-music。
总之,本文介绍了以下主题:
您可以使用本文创建使用JavaScript和Node的应用程序.js,使用Zenvia平台从WhatsApp频道发送和接收消息以及使用AudD平台进行音乐识别。
| 留言与评论(共有 0 条评论) “” |