3

我正在编辑一个 KRL/Twilio 应用程序,并且我有一个收集用户输入的事件。是否可以将变量传递给“gather_start ”触发的事件?以下是我迄今为止尝试过但不起作用的方法(在这种情况下,它试图将 var“color”传递为“red”):

twilio:gather_start("choice") with action="choice?color=red" and numDigits = "1" and timeout = "5" and color = "red" and parameters = {"color":"red"};

似乎持久变量可能是最好的(将“ent:color”之类的设置为“红色”),但听起来应用程序持久变量还不可用?TIA。

4

1 回答 1

3

正确的方法是使用持久变量。应用程序变量是一种选择,但您可能想要的是实体变量。Kynetx Webhooks 与 Twilio 的 cookie jar 一起使用,从而产生一个在 kynetx 应用程序中维护实体变量的会话。

每个电话都有自己的会话,因此您无需担心多个同时通话会相互影响。

应用程序持久变量(使用app:myvar而不是ent:myvar)将起作用,但对于应用程序来说是全局的,因此它们应该仅在变量作用于应用程序时使用。

这里有一些规则可以证明这一点:

 rule firstquestion {
    select when twilio firstquestion
    {
      twilio:gather_start("firstanswer");
        twilio:say("Question One");
      twilio:gather_stop();
    }
  }

  rule firstanswer {
    select when twilio firstanswer
    pre {
      firstchoice = event:param("Digits");
    }
    {
      twilio:gather_start("secondanswer");
        twilio:say("Question Two");
      twilio:gather_stop();
    }
    fired {
      set ent:firstchoice firstchoice;
    }
  }

  rule secondanswer {
    select when twilio secondanswer
    pre {
      firstchoice = ent:firstchoice;
      secondchoice = event:param("Digits");
    }
    noop();
  }
于 2010-12-08T00:19:59.217 回答