2

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

  • 创建和分配变量值
  • 基本逻辑组件,例如 If Then Else、Equal/Not Equal、包含、文本比较、数字、日期、
  • 使用正则表达式解析文本的能力
  • 将变量插入任何值并正确解析它们的能力
  • 字符串连接或类似

诸如此类的组件将允许应用程序开发人员拥有更多独立的应用程序,而不必建立基础设施来管理所有应用程序逻辑。

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

4

3 回答 3

1

@斯科特巴斯托

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

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

您可以随时向 Telestax 发送 RFE。

于 2015-03-26T22:52:27.800 回答
1

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

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

然而,“逻辑”需要付出高昂的代价。引入用于分支、比较、字符串操作等的几个元素需要大量的设计思考、实现的时间和令人头疼的调试。

我建议的替代方法如下:

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

  2. 将所有逻辑保存在一个地方,而不是将其分散到多个新元素中。引入“脚本”元素,其中某种脚本引擎将用于执行实现所有必需逻辑的代码块。让这个元素通过带有“INs”和“OUTs”的简单的基于字符串的合约与外界对话。已经有一个使用Groovy的实验性实现, 同样可以使用服务器端Javascript来完成。

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

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

  1. 介绍一个非常基本的分支/GOTO 元素。它将能够中断模块执行并重定向到另一个模块。然而,分支的逻辑将在前面的 Script 元素中实现。

技术缺陷和“为什么逻辑应该保存在一个单一的黑盒位置”

RVD 有状态。除了需要保留的由 Restcomm 提供的变量之外,它还创建了一些变量(收集、ES 元素创建此类)。由于应用程序流程作为一系列 restcomm 发起的操作请求进行,这些操作请求本质上是无状态的,因此有两个选项。

(a) 在操作 URL 中回收这些变量或

(b) 将它们存储在 RVD 中的类似会话的结构中,并保留一个被传输的会话 ID。

RVD 使用 (a)。

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

此状态需要很小,以免在 RVD 和 Restcomm 之间来回传输大量数据。

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

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

于 2015-04-01T12:44:28.100 回答
0

在 RVD 中启用脚本相对简单。然而,目前尚不清楚什么是处理应用程序代码错误的好方法。没有经验的开发人员可以使用动态的、松散类型的脚本语言很快地自责。

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

我们可以仔细看看您正在尝试实现的应用程序吗?如果打算将短信或语音通话录音发送到 Slack 等第三方服务,则可以通过 Zapier 等服务实现。请参阅随附的屏幕截图,这些屏幕截图说明了从 WordPress 插件(重力形式)到 Slack 的连接。

Restcomm 的类似 Zapier 模块(代替重力形式)会有所帮助吗?

重力形式到 Slack 连接

条件数据集成

于 2015-03-29T16:07:18.730 回答