Restcomm Apps中的基本逻辑组件

时间:2015-03-26 18:01:07

标签: voip mobicents restcomm

我在Restcomm Apps中看不到使用RVD创建基本数据或基本逻辑树的方法。有没有办法为:

创建组件
  • 创建和分配变量值
  • 基本逻辑组件,如If Then Else,Equal / Not Equal,Contains,Comparisons for Text,Numbers,Dates,
  • 使用Regex
  • 解析文本的功能
  • 将变量插入任何值并正确解析的能力
  • 字符串连接或类似

这些组件将允许应用开发者拥有更多自包含应用,而不必站起来管理所有应用逻辑。

当前组件API是否支持新组件的开发?

3 个答案:

答案 0 :(得分:1)

@scottbarstow

目前,Restcomm RVD并未提供开箱即用的大部分功能。但是,可以使用Restcomm RVD外部服务实现您的目标。变量,逻辑,正则表达式解析等将使用您选择的外部编程语言进行处理。

另一种选择是使用Restcomm-ruby helper来构建您的应用程序。基本应用程序将使用Restcomm Visual Designer构建,然后您可以使用Restcomm-ruby助手调用该应用程序。 Restcomm-ruby助手将处理所有(If Then Else,Equal / Not Equal等)。

您可以随时向Telestax发送RFE。

答案 1 :(得分:1)

RVD产生于在为用户提供尽可能多的灵活性和尽可能少的开发努力同时遵循迭代方法之间的斗争。它通过小步骤发展,以便始终拥有功能正在进行的应用程序。为了满足这些要求,我们做出了一个非常关键的设计决策:保持核心部分(控制器)一个虚拟引擎,只需生成RCML并将所有逻辑委托给其他地方,可以通过HTTP轻松访问。

话虽如此,@ scottbarstow,我欢迎你的评论。拥有自包含的应用程序极大地简化了应用程序的设置和维护,特别是现在RAS正在兴起。 ES应该是与真正的外部目标进行对话的工具,而不是在RVD之外委派各种复杂操作的方法。

然而,“逻辑”成本很高。引入分支,比较,字符串操作等几个元素需要设计很多思考,需要实施数小时以及要调试的麻烦。

我建议的替代方法如下:

  
      
  1. 改进ES与外部端点的对话方式。添加完全支持   提交POST / JSON有效负载。可以选择   application / json和url-encoded形成内容类型。处理   通用服务提供商通常需要的所有其他内容   像Slack。所有处理都将在ES中完成。进一步反馈   这将不胜感激。

  2.   
  3. 将所有逻辑保留在一个位置而不是将其传播   几个新元素。在某种情况下引入“Script”元素   脚本引擎将用于执行代码块   实现所有必需的逻辑。让这个元素与外界交谈   世界通过简单的基于字符串的合同与“INs”和“OUTs”。   已经有一个使用 Groovy 的实验性实现   服务器端 Javascript

  4. 也可以这样做         

    但是,等一下。 RVD应该是普通用户的简单工具,而不是开发人员!   嗯,的确如此。但考虑替代方案。是否更容易理解和使用一些新的智能元素以及随之而来的所有附加语法含义?我想不是,除非它非常基本。更不用说调试和支持了。

         

    Javascript有一个众所周知的语法,它更容易调试。它甚至可以在浏览器中运行,打开窗口进行客户端测试。

         
        
    1. 介绍一个非常基本的分支/ GOTO元素。它将能够打破模块执行并重定向到另一个模块。的逻辑   但是分支将在之前的Script元素中实现。
    2.   

技术缺陷和“为什么逻辑应该放在一个黑盒子里”

RVD有状态。除了由Restcomm提供的需要保留的变量之外,它还创建了变量(Collect,ES元素创建了这些变量)。由于应用程序流程本身就是一系列无状态的restcomm发起动作请求,因此有两种选择。

(a)在行动网址或

中回收这些变量

(b)将它们存储在RVD中类似会话的结构中,并保留转移的会话ID。

RVD使用(a)。

这意味着只要控制权传递回restcomm(就像执行Gather / Collect元素时),所有这些状态都需要在响应中包含的操作URL中进行编码。这样当restcomm进行下一个请求时RVD将具有该状态。与旧式Web开发人员或多或少相同的模式,没有HTTP会话。

这个状态需要 small 才能在RVD和Restcomm之间来回传输大量数据。

RVD应用程序由包含按顺序处理的元素的模块组成,任何元素都可能在RVD中破坏应用程序执行并将控制权返回给restcomm。使元素独立是有意义的,这样就可以选择中断应用程序执行并将控制权返回给Restcomm。

我的观点是我们需要保持元素独立,元素和RVD执行上下文之间的接口简单,状态易于序列化。像Script元素这样的块状框架似乎符合这个目标。

答案 2 :(得分:0)

启用脚本到RVD相对简单。但是,目前尚不清楚处理应用程序代码错误的好方法是什么。没有经验的开发人员可以使用动态,松散类型的脚本语言快速拍摄自己。

RVD的初衷是让简单的实时通信应用程序变得非常简单,并且可以简化创建。 RVD的范围是否应扩大以使更复杂的事情成为可能或将其推迟到外部服务仍然是一个悬而未决的问题。

我们可以仔细查看您要尝试实施的应用吗?如果打算进行短信或语音通话录音,并将其发送给第三方服务,如Slack,可以通过像Zapier这样的服务来实现。请参阅附加的屏幕截图,其中说明了从WordPress插件(Gravity Forms)到Slack的连接。

用于Restcomm的类似Zapier模块(代替Gravity Forms)会有帮助吗?

Gravity form to Slack connection

Conditional data integration