【问题标题】:Twilio multiple treads to have each call have 1 processTwilio 多线程让每个调用都有 1 个进程
【发布时间】:2013-07-18 17:15:45
【问题描述】:

使用 Ruby、Sinatra 和 Twilio REST API,我正在为我的公司编写一条客户服务热线。当收到来电时,客户在 < Conference > 动词中被搁置,而应用程序向座席发出去电。如果他接听电话,那么它们就是桥接的电话。

目前有 3 个会议室(技术支持、销售和移动支持),由我相当线性的程序创建。但是,如果会议室忙,而另一个电话进来请求已经占用的房间,他们就无法联系到座席,这是有问题的。

我的问题是:我可以/如何在 Ruby 中为每个传入呼叫创建一个线程,以便它拥有自己的独立进程?

我的理由是:一旦每个呼叫都有其线程,那么我可以创建一个名为“部门名称”+“@process.id”的房间。

例如:(还添加了一个随机生成的 7 位数字,使每个会议名称 100% 唯一。

@random = Random.rand(10_000_000 - 1_000_000) + 1_000_000

puts @random

< Dial >

< Conference > 'Tech Supp' + PROCESS_ID \ + @random会议>

< /Dial >

【问题讨论】:

    标签: ruby twilio


    【解决方案1】:

    Twilio 布道者在这里。

    这里有两个想法。与其进入线程,这会变得非常混乱,非常快,为什么不使用入站呼叫者 CallSid 创建一个不同的会议室。在使用该技术之前,我已经创建了类似于您所描述的系统。您的系统只是在每个 CallSid 到达时对其进行编目,以便您稍后返回并连接并代理到该会议。

    另一个选项可能是使用队列。当有新呼叫拨入时,您可以将它们放入队列(或如果需要,可以放入不同的队列),他们可以在那里等待,直到代理准备好。然后,座席可以从队列中挑选下一个呼叫者与之通话。

    这个关于使用<Queue> 的方法可能会有所帮助:

    http://www.twilio.com/docs/howto/callqueue

    希望对您有所帮助。

    【讨论】:

    • 这实际上就是我今天最终要做的事情,使用 MySQL 数据库来存储 SID,并将其视为其几乎唯一的。我查看了CallQueue,但我的老板不想要它,而且看起来很复杂。
    • 好的,很高兴你成功了。仅作记录, 与会议实际上并没有太大的不同,实际上我会自动为您完成我上面描述的事情。它专门针对需要调用者稍等片刻的场景。它有几个不错的功能:它是一个 FIFO 有序列表,因此您不必自己跟踪它,它会为您提供统计信息,例如当前队列中的呼叫者数量、个人在队列中的时间以及平均等待时间队列中所有呼叫者的时间。您可以使用 构建它,它只是更加手动。
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多