如何在调用节点库的twilio函数中获取可用的工作线程数?
我希望调用twilio函数并获得可用工人的数量 我觉得这可能与任务队列和匹配的可用工作人员有关 我想到了以下几点。但是,当用户与任务交互时,他们仍然被列为可用,这意味着这不一定有效如何在调用节点库的twilio函数中获取可用的工作线程数?,twilio,twilio-functions,Twilio,Twilio Functions,我希望调用twilio函数并获得可用工人的数量 我觉得这可能与任务队列和匹配的可用工作人员有关 我想到了以下几点。但是,当用户与任务交互时,他们仍然被列为可用,这意味着这不一定有效 exports.handler = function (context, event, callback) { const client = require('twilio')(context.ACCOUNT_SID, context.AUTH_TOKEN); client.taskrouter .workspace
exports.handler = function (context, event, callback) {
const client = require('twilio')(context.ACCOUNT_SID, context.AUTH_TOKEN);
client.taskrouter
.workspaces('eee')
.workers.list()
.then(workers => {
data = {
availWorkersCount: Object.keys(workers.filter(x=> x.available === true && x.attributes.includes("sales"))).length
};
const response = new Twilio.Response();
response.appendHeader('Access-Control-Allow-Origin', '*');
response.appendHeader('Access-Control-Allow-Methods', 'OPTIONS POST GET');
response.appendHeader('Access-Control-Allow-Headers', 'Content-Type');
response.appendHeader('Content-Type', 'application/json');
response.setBody(data);
callback(null, response);
});
}) 我知道这有点晚了,但这是我在twilio函数中使用的代码块。我们从studio流调用该函数,并使用结果来决定是将呼叫路由到语音邮件中,还是播放一些IVR选项来选择应该放入的队列。要使用它,您可以输入一项可选技能,进一步过滤代理。我们抓住所有可用的工人,然后筛选出只有那些具备所需技能的工人 然后,您可以使用此选项并检查是否有任何可用的代理也分配了任务,然后将其从计数中删除
const fetch = require("node-fetch");
exports.handler = function(context, event, callback) {
let response = new Twilio.Response();
// Set the status code to 200 OK
response.setStatusCode(200);
// Set the Content-Type Header
response.appendHeader('Access-Control-Allow-Origin', '*');
response.appendHeader('Access-Control-Allow-Methods', 'OPTIONS, POST, GET');
response.appendHeader('Access-Control-Allow-Headers', 'Content-Type');
response.appendHeader('Content-Type', 'application/json');
let body = {
TotalAvailable: 0
};
let client = context.getTwilioClient();
client.taskrouter.workspaces(context.WorkspaceSid)
.workers
.list({
available: 'true',
limit: 50
})
.then((workers) => {
let agents = [];
let i = 0;
if(workers){
for(i = 0; i < workers.length; i++){
let worker = workers[i];
let item = {};
let attributes = JSON.parse(worker.attributes);
if(attributes && attributes.routing && attributes.routing.skills && attributes.routing.skills.length > 0){
item.skills = attributes.routing.skills;
item.nid = attributes.nid;
item.first_name = attributes.first_name;
item.last_name = attributes.last_name;
if(event.skill){
if(item.skills.includes(event.skill)){
// TODO: filter here
agents.push(item);
}
}else{
agents.push(item);
}
}
}
}
body.TotalAvailable = agents.length;
body.Agents = agents;
response.setBody(body);
callback(null, response);
})
.catch((ex) => {
body.error = true;
body.message = ex;
response.setBody(body);
callback(null, response);
});
};
const fetch=require(“节点提取”);
exports.handler=函数(上下文、事件、回调){
let response=new Twilio.response();
//将状态代码设置为200 OK
响应。设置状态代码(200);
//设置内容类型标题
appendHeader('Access-Control-Allow-Origin','*');
appendHeader('Access-Control-Allow-Methods','OPTIONS,POST,GET');
appendHeader('Access-Control-Allow-Headers','Content-Type');
appendHeader('Content-Type','application/json');
让主体={
总数:0
};
让client=context.gettwillioclient();
client.taskrouter.workspaces(context.WorkspaceSid)
.工人
.名单({
可用:“true”,
限额:50
})
.然后((工人)=>{
让代理=[];
设i=0;
if(工人){
对于(i=0;i0){
item.skills=attributes.routing.skills;
item.nid=attributes.nid;
item.first\u name=attributes.first\u name;
item.last_name=attributes.last_name;
if(事件技能){
if(项目技能包括(事件技能)){
//TODO:在这里过滤
代理。推送(项目);
}
}否则{
代理。推送(项目);
}
}
}
}
body.TotalAvailable=agent.length;
主体。代理人=代理人;
回应:主体(主体);
回调(空,响应);
})
.catch((ex)=>{
body.error=true;
body.message=ex;
回应:主体(主体);
回调(空,响应);
});
};
Twilio员工在这里。您是否检查了员工频道的配置容量是多少()?如果您使用的是Flex,默认值是10个同时进行的短信/聊天对话和1个语音对话。当您说在与任务交互时工作人员仍然可用时,这是否包括语音呼叫的工作人员?此外,使用累积统计端点将允许您获得每个活动状态下的人员总数:@CharlieWeems,也许您可以编写一个答案,说明解决方案如何取决于容量?为简单起见,假设代理最多可以处理每个任务类型的1个任务。此外,我相信,无论任务类型如何,工人在响应任务时仍处于“可用”状态。我在这里的使用案例(更深入一点)是调用Studio中的twilio函数来检查可用工人。其想法是,如果没有可用的工人,则执行XYZ。否则,发送到flex。这使我能够为发起某种入站任务的客户优化结果。例如,WebChat,用户发起WebChat,没有可用的代理,为客户提供使用聊天机器人的能力。另一个例子是,使用initiates入站文本,没有可用的代理,允许聊天机器人回答问题。我不认为这仅限于这些任务类型。我相信所有渠道applyI都会建议使用TaskRouter本身来实现这一点。这正是它的用途,如果没有可用的工作人员,您可以让任务移动到另一个队列,并以不同的方式与它交互。