2011-07-14 5 views
3

私は、私たちの会社と電話会社(顧客から電話を受け取り、入力(キー、ボイスメッセージなど)をキャプチャする会社)との間のコミュニケーションに役立つAPIを行っています。電話ワークフローをデータベースに格納する方法、またはそれを実行するより良い方法はありますか?

ワークフローをデータベースに保存するにはどうすればよいですか?私は次の要求でそれを識別し、プロンプトを尋ね、データ/音声をキャプチャし、N番目の間違った試行の後にワークフローの特定の位置に戻るために使用する各呼び出しに固有のIDを提供できるようにしたい(可能な複数の一品だけでなく、Y/N場合は、だけでなく、 -

など、成功した入力、通話終了の場合は次のステップにGOTO)とjumtのように私のようなオペランドをachiveしようとしています1,2,3,4 ...選択を書く)
- WHILE(N番目の試み)
- GOTO(別のステップへのジャンプ - 次のではない)

私は私の説明があまりにも曖昧であることを知っている、と私それについて申し訳ありません。あなたはすべて、自動電話が何であり、その間に何が起こるかを知っています。

私は、新しい電話キャプチャプロジェクトごとに別のワークフロー処理クラスを用意していました。このようにして、ある人がプロジェクト1のステップ1をAPIに尋ねると、コードは要求をプロジェクトクラスに渡す必要があることを知ります。 APIには、ワークフローテーブルを読み込んで、要求を目的のプロジェクトクラスに配信する処理を行うメインクラス(ディスパッチャ)があります。

私は柔軟でシンプルなものを作りたいと思っています。誰かがアイデア、例、提案を持っていますか?

ここまでは私の考えです。 、ワークフロー内のノードの名前(プロジェクトIDと名前が一意のキーを作る) - 表にワークフローを保存

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、我々はさまざまなプロジェクトを持っています原因、名前(6,6、)、VOICE、NONE)、試み - 自宅で何度もこれを繰り返すことができますが、エラー、成功、失敗としてカウントされます。エラーが次のノードにつながります。

可能なワークフローは次のようになります。

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 

エラーとワークフローのイベント/ノードがエラーcouterがリセットされます成功裏に合格した場合。

エラーメッセージが誤って応答された場合(4回)、発信者の音声メッセージをキャプチャするように指示された場合、6番の番号を尋ねられます。成功した場合、コールは終了します。私はデータベース内のすべてのステップのログを保持するつもりです。

私がすることができ、おそらく代わりに、自分の名前

P.S.のノードのIDを持つ成功事例のとエラー列をexcangeます問題の悪い説明を申し訳ありません。

+2

あなたの質問は答えが広すぎます。絞り込み、件名ごとの質問をして具体的にしてみてください。「私はこのユースケースを持っています......これはデータベース構造の私の考えです。私のデータベースをレイアウトする良い方法はありますか? '次に、データベースを作成してコードを書いてみると、あなたが立ち往生している場合は、あなたが抱えている問題に関する特定の質問をしてください。 – Johan

+0

私はこれまでより良い説明と投稿をしようとしました。希望が役立ちます。 –

答えて

1

テーブルが一杯必要です。各varcharフィールドは、ルックアップテーブルの外部キーである必要があります。そのvarcharフィールドに格納できる情報より多くの情報が必要になります。

また、個々のフィールドで使用できるすべての状態を書き留めて、状態遷移図を描画します。次に、状態遷移が依存するフィールドを識別できます。ワークフロー・テーブルには、これらのフィールドと関連する外部キーが含まれます。

+0

プロポーザルを実装する記事やソリューションへのリンクをいくつか用意してください。 –

+0

私はリンクを持っていません。それは私が個人的に経験したもので、電話アプリケーションを開発している間に得たものです。 – MicSim

+0

OK、少なくとも詳細、スキーム、テーブル構造などを提供できますか?私はあなたの答えからあなたの考えを得ることはありません –

関連する問題