我正在做一个API,它将用于我们公司和电话捕获公司(一个接受客户电话并捕获其输入(键,语音消息等)的公司)之间的通信。
如何将工作流存储在数据库中?我希望能够为每个呼叫提供唯一的ID,我们将用于在下一个请求中识别它,请求提示,捕获数据/语音,在n次错误尝试(如GOTO)后返回到工作流中的某个位置,并在成功输入的情况下跳转到下一步,结束呼叫等。
我试图实现这样的操作数:
- IF(可能的多选,不只是Y/N,还有1,2,3,4…选择)
- WHILE(n次尝试)
- GOTO(跳转到不同的步骤,而不是下一个)
我想有一个单独的工作流处理类为每个新的电话捕获项目。这样,如果有人为项目1的步骤1请求API,代码将知道它应该将请求传递给项目类。API将有一个主类(dispatcher),它将读取工作流表并处理向所需项目类提供的请求。
我想做一些灵活和简单的东西。有人有想法、例子或建议吗?
这是我到目前为止的想法。将工作流存储在表 中CREATE TABLE `projects_workflow` (
`flow_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`project_id` INT NOT NULL ,
`name` VARCHAR( 20 ) NOT NULL ,
`prompt` VARCHAR( 20 ) NOT NULL ,
`capture` VARCHAR( 20 ) NOT NULL ,
`attempts` INT NOT NULL ,
`success` VARCHAR( 20 ) NOT NULL ,
`error` VARCHAR( 20 ) NOT NULL
);
flow_id -主id, project_id -项目id,因为我们将有不同的项目,name -工作流中节点的名称(项目id和名称构成唯一的键),prompt -调用者将听到什么(系统定义的消息),capture -系统将捕获什么(entry(6,6,), VOICE, NONE), attempts - home多次可以将此重复之前算作错误,成功和错误导致下一个节点。
可能的工作流程如下:
flow_id project_id name prompt capture attempts sccess error
1 1 capture1 01 6,6 1 endcall error1
2 1 error1 02 NONE 4 capture1 capture2
3 1 capture2 03 VOICE 1 endcall
4 1 endcall 04 ENDCALL 1
如果工作流中有错误的事件/节点成功通过,则错误计数器将被重置。
所以有人打电话,他/她被要求一个6位数的号码,如果错了,一个错误信息将得到回应(4次),然后去捕捉来电者的语音信息。如果通话成功,则结束通话。我将在数据库中保存每一步的日志。
我可以并且可能会用节点的id而不是它们的名称来交换成功和错误列
注:
您将需要一大堆表。每个varchar字段都应该是查找表的外键。您最终需要的信息将超过您在该varchar字段中存储的信息。
还要写下您的单个字段可以采取的所有状态,并绘制状态转换图。然后,您可以识别状态转换所依赖的字段。然后,您的工作流表将包含这些字段+一些关联的操作外键。