开始使用Elarian
客户服务对于任何企业品牌都是至关重要的。然而,挑选和选择适当的数字渠道来接触你的客户可能是困难的。出于这个原因,企业拥抱客户参与软件以保持相关性是有意义的。
Elarian是一个框架,帮助你建立一个与你的业务目标相一致的客户服务战略。它的重点是通过短信、UUSD、Telegram机器人、WhatsApp等渠道吸引客户,简化构建数据驱动的应用程序。
本教程将使用Elarian和Node.js 构建一个USSD服务。
先决条件
- 对于开发,我推荐[VS Code]文本编辑器。
- 在你的机器上安装一个[Node.js]运行时。
- 对[JavaScript]编程语言有基本了解,最好是ES6及以上版本。
- 你将需要一个Elarian账户。要创建一个仪表板,请注册[elarian]。
创建一个账户
要开始工作,请到elarian,用你的电子邮件和密码注册。另外,你也可以使用谷歌和GitHub等供应商来登录。

在您访问仪表板之前,Elarian将发送一个电子邮件验证链接。登录成功后,你将进入Elarian仪表板,看起来像。

设置Node.js项目
要设置该项目,打开你的终端并创建一个名为elarian-app-demo 的文件夹。
mkdir elarian-app-demo
接下来,在该文件夹内导航,使用命令初始化Node.js应用程序。
cd elarian-app-demo && npm init -y
现在让我们在VS Code中打开该项目文件夹。
code .
命令npm init -y 创建一个package.json 文件,以保存与我们的应用程序相关的元数据,如项目描述、版本、依赖性等。
对于我们的应用程序,我们需要从npm获得以下包。
-
带有Node.js版本8或以上的
Elarian JavaScript SDK。 -
Dotenv:为了安全地存储API密钥,我们将在我们的应用程序中从.env文件中注入环境变量,避免硬编码任何敏感数据。确保在你的.gitignore文件中添加一个.env,以便不把这个推送到GitHub仓库中。 -
Nodemon: nodemon包将监控我们应用程序中的所有变化,并不断重启我们的服务器。
在你的终端上,使用下面的命令安装这些包。
npm i elarian dotenv
对于nodemon ,我们将把该模块作为开发依赖来安装。
npm install --save-dev nodemon
为了启动,在elarian-app-demo 目录内创建根index.js 文件,并导入Elarian 和dotenv 包,作为。
const { Elarian } = require('elarian');
const dotenv = require('dotenv');
dotenv.config()
要创建一个Elarian 的客户端实例,我们必须传递orgId ,appId ,和apiKey 。因此,让我们回到仪表板上抓取这些凭证。为了管理客户,我们需要创建一个组织作为命名空间,持有客户将参与的应用程序和渠道。
点击New Organization 按钮,在我们的仪表板上的左侧面板上创建一个组织。

在我们的案例中,我们将创建一个测试沙盒环境,并将其命名为elarian-demo 。然而,在从设置部分生成API密钥之前,让我们创建一个应用程序并将其命名为customer-demo-app 。

然后,在设置下,我们将生成一个API密钥。

你需要将orgId 、appId 、apiKey 安全地存储在一个.env 文件中。你的.env 文件将有如下变量。
ELARIAN_ORGID=your_org_id
ELARIAN_APPID=your_app_id
ELARIAN_API_KEY=your_api_key
由于我们已经在我们的index.js 中初始化了dotenv.config() ,我们可以安全地将elarianClient 对象实例化。
const elarianClient = new Elarian({
orgId: process.env.ELARIAN_ORGID,
appId: process.env.ELARIAN_APPID,
apiKey: process.env.ELARIAN_API_KEY
});
注意:在
.gitignore文件中,一定要排除.env,这样凭证就不会提交到任何 GitHub 公共仓库。
然后,我们需要监听来自我们的elarianClient 实例的错误和连接事件,以测试连接情况。注意Elarian是如何使用错误先处理程序来为错误对象保留第一个事件的。否则,与Elarian的成功连接应该把成功信息记录到控制台。
elarianClient
.on("error", (error) => {
console.log("A connection error", error)
})
.on("connected", () => {
console.log("Elarian connection is successful")
})
.connect()
管理Elarian的客户数据
Elarian是以客户为抽象单位建立的。为了实现这一点,它以反应式的范式管理数据。
大的类别包括。
- 元数据持有一个与独特客户信息相关的键值数据存储。
- 通过AppData,我们可以在我们的应用程序中存储跟踪用户状态的数据。例如,在我们的USSD应用程序中,AppData将保存用户在不同转换和应用程序生命周期中的状态。此外,这些数据被存储在内存中,以便快速访问。
- 身份数据将允许你从你的应用程序中唯一地识别客户。有了这个,Elarian可以发起请求并生成数据,以帮助您改善客户的情况。
我们将在以下章节中使用上述策略来管理客户数据。
Node.js中的Elarian USSD服务
在使用USSD服务之前,我们需要从我们的仪表板上注册一个频道。前往你的账户,点击渠道标签下。对于我们的情况,点击USSD Service code section 。

我们需要选择USSD代码和我们的频道将使用的应用程序。对于我们的测试案例,USSD代码是*350# 。

在先前成功建立了Elarian连接后,我们现在需要一个函数来处理我们的ussdSession 。就在elarianClient 连接方法的上方,添加以下代码段。
elarianClient.on('ussdSession', USSDHandler);
在这里,我们监听ussdSession ,从用户与我们的应用程序的互动中启动,从而执行我们稍后将创建的USSDHandler 。
我们的USSDHandler 函数处理用户与我们应用程序会话的互动。由于我们使用USSD服务代码作为通道,我们的函数将需要将通道数据作为参数传入。
渠道数据是客户在与渠道互动时产生的数据。这可以触发事件,如通知或回调以获得用户响应。让我们在下面定义USSDHandler 函数。
const USSDHandler = async (notification, customer, appData, callback) => {
try {
const input = notification.input.text;
let screen = "home";
// appData
if (appData) {
screen = appData.screen;
}
const customerData = await customer.getMetadata();
let { email, name, age, password } = customerData;
const menu = {
text: "",
isTerminal: false,
};
let nextScreen = screen;
if (screen === "home" && input !== "") {
if (input === "1") {
nextScreen = "request-email";
} else if (input === "2") {
nextScreen = "request-password";
} else if (input === "3") {
nextScreen = "quit";
}
}
if (screen === "home" && input === "") {
if (name) {
nextScreen = "request-password";
}
}
}
}
让我们简单地剖析一下上面的代码。
- 从我们的客户对象,我们使用方法
getMetaData,该方法持有客户数据,如电子邮件、姓名、年龄和密码,用于我们的通信协议。 - 通知对象包含
input和响应用户所需的通信渠道。 - AppData将状态存储在内存中,以便快速访问并跟踪屏幕之间的过渡。
- 默认情况下,屏幕被设置为
home。然后我们需要根据用户的互动来改变状态和屏幕视图。
从我们的USSD会话中,我们需要保存客户的电子邮件、姓名、年龄和密码。每一步都涉及到不同的屏幕,将使用开关语句来处理。
switch (nextScreen) {
case "quit":
menu.text = "Great having you";
menu.isTerminal = true;
nextScreen = "home";
callback(menu, {
screen: nextScreen,
});
break;
case "info":
name = input;
menu.text = `Hello ${name}`;
menu.text = "Thank you for joining us,";
menu.isTerminal = true;
nextScreen = "home";
callback(menu, {
screen: nextScreen,
});
break;
case "request-email":
menu.text = "Please enter your email";
nextScreen = "request-name";
callback(menu, {
screen: nextScreen,
});
break;
case "request-name":
menu.text = "Please enter First and Last names";
nextScreen = "request-age";
callback(menu, {
screen: nextScreen,
});
const resp = await customer.updateMetadata({
email: input,
});
console.log(resp);
break;
case "request-age":
menu.text = "Please Enter your Age";
nextScreen = "password";
callback(menu, {
screen: nextScreen,
});
await customer.updateMetadata({
name: input,
});
break;
case "request-password":
menu.text = "Enter your password";
(nextScreen = "info"),
callback(menu, {
screen: nextScreen,
});
break;
case "password":
menu.text = "Please set a password";
nextScreen = "authorize-account";
callback(menu, {
screen: nextScreen,
});
await customer.updateMetadata({
age: input,
});
break;
case "authorize-account":
menu.text = `Great! ${name}, you have joined Elarian!`;
menu.isTerminal = true;
nextScreen = "home";
callback(menu, {
screen: nextScreen,
});
await customer.updateMetadata({
password: input,
});
break;
case "home":
default:
menu.text = "Welcome to Elarian!\n1. Register\n2. Login\n3. Quit";
menu.isTerminal = false;
callback(menu, {
screen: nextScreen,
});
break;
}
}
为了检查一切是否正常,我们可以运行一个测试,回到仪表板。在左下方,启动USSD模拟器。模拟器将提示电话号码和USSD代码。这里是一个工作测试!

在USSD提示成功后,我们应该在模拟器关闭前看到以下信息。

结论
总之,Elarian是一个有助于实现客户至上的商业模式的服务提供商。它通过与庞大的供应商渠道的无缝整合,帮助满足你的业务需求。
它以一种反应式的编程风格做到这一点,在基础设施的部署和管理方面是强大的,可扩展的,并且无忧无虑。