diff --git a/README.md b/README.md index 11bdba0..aaa9cd9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Runa-CCAは、[Twilio](http://twilio.kddi-web.com)を使った、やや本格的 [Twilio](http://twilio.kddi-web.com)調査中というのと、プログラミング勉強中というのとで、いろいろといまいちです。バージョンアップしていきます。 -最新はVersion 1.1。バージョンについてはREADME最後の方で説明しています。 +最新はVersion 1.2。バージョンについてはREADME最後の方で説明しています。 概要 ------ @@ -19,7 +19,9 @@ Runa-CCAは、[Twilio](http://twilio.kddi-web.com)を使った、やや本格的 + Twilioソフトフォン + ログイン認証(SystemAdmin,Supervisor,Operator権限) + 発信・着信 - + キューへの発信・着信待機(オペレータの所属するキューの一覧より) + + キューへの発信・着信待機(オペレータの所属するキューの一覧より発信可能) + + ミュート/ミュート解除(Version 1.2〜) + + DTMF送信用ダイヤルパッド(Version 1.2〜) + 管理機能 + ログイン認証(SystemAdmin,Supervisor,Operator権限) + オペレータ管理(追加・一覧表示・削除・変更) @@ -30,6 +32,8 @@ Runa-CCAは、[Twilio](http://twilio.kddi-web.com)を使った、やや本格的 + 音声ガイダンス + キューイング(待ち順番アナウンス付き) + ヒストリカルレポート収集 ++ レポート + + ウォールボード(オペレータの所属するキュー情報を表示)(Version 1.1〜) ### Webクライアント(Twilioソフトフォン) ### [flickrに画面イメージを上げておきました](https://www.flickr.com/x/t/0093009/photos/40853659@N06/sets/72157644527599345/)。 @@ -54,6 +58,7 @@ MySQLのテーブルに格納されます。レポートの参照は、MySQLの ------ #### Version 0.8 #### プレリリース版です。 + #### Version 1.0 #### リリース版です。 @@ -73,6 +78,21 @@ MySQLのテーブルに格納されます。レポートの参照は、MySQLの + TwiML出力方法の変更。Webクライアント側と合わせてTwigを利用するようにしました。 + 不要ファイルの削除と、細かなバグ修正を実施。 +#### Version 1.2 #### +ソフトフォンの機能追加を行いました。 + ++ ソフトフォン + + ミュート/ミュート解除、ダイヤルパッド(DTMF送信用)ボタンを追加。 + + ボタンの表示・非表示を追加(通話設立前はHangUpボタン非表示等)。 + + ソフトフォン小型化。 + + ソフトフォン起動前に、オペレータが持っているキュー情報を更新する仕様に変更。 + ++ Webクライアント + + キューID(TwilioのFriendly Name)の空白を非許容に変更(CSSと相性悪いので)。a-Z0-9に加えて#_-を許容。 + + キューを持っていないオペレータの表示がエラーになっていたので、エラーにならないように修正。 + ++ その他 + + サンプルSQLのキュー作成部分を削除(Webクライアントからキューを作成してください)。 ライセンス ---------- diff --git a/create_table_for_Runa-CCA.sql b/create_table_for_Runa-CCA.sql index 7dcdf6d..746529c 100644 --- a/create_table_for_Runa-CCA.sql +++ b/create_table_for_Runa-CCA.sql @@ -157,6 +157,4 @@ ENGINE InnoDB; */ INSERT INTO `twilio`.`operator_level` (`operator_level_id`, `operator_level_name`) VALUES (1, 'SystemAdmin'),(2, 'Supervisor'), (3, 'Operator'); INSERT INTO `twilio`.`operator` (`operator_id`, `password`, `last_name`, `first_name`, `client_name`, `telnum`, `operator_level_id`) VALUES('admin', '$2y$10$XWdgTixMOjWgn5SRXekSv.j8oBXkgZIlNfLxLpXBJUccar3jyQ8ay', 'admin', 'admin', 'admin', '+815099998888', 1); -INSERT INTO `queue` (`queue_id`, `queue_name`, `action_url`, `wait_url`, `guidance_url`, `twilio_queue_id`) VALUES ('sample', 'sample', 'http://localhost/runa-cca/twilio/callflow/newservice/enqueaction', '/runa-cca/twilio/callflow/newservice/wait', '/runa-cca/twilio/callflow/newservice/guidance', NULL); -INSERT INTO `twilio`.`operator_queue` (`id`, `operator_id`, `queue_id`) VALUES ('1', 'admin', 'sample'); diff --git a/lib/Runa_CCA/Controller/OpConfiguration.php b/lib/Runa_CCA/Controller/OpConfiguration.php index 2c709ce..9fb42f9 100644 --- a/lib/Runa_CCA/Controller/OpConfiguration.php +++ b/lib/Runa_CCA/Controller/OpConfiguration.php @@ -503,6 +503,9 @@ static function modOperator($app,$params){ }else{ + // Declar for the operator who doesn't have any queues. + $selectedQueues = array(); + // DB Connection $dbConn = (new \Runa_CCA\Model\DB())->getIlluminateConnection(); diff --git a/lib/Runa_CCA/Controller/Softphone.php b/lib/Runa_CCA/Controller/Softphone.php index 32c1cde..c78994a 100644 --- a/lib/Runa_CCA/Controller/Softphone.php +++ b/lib/Runa_CCA/Controller/Softphone.php @@ -39,6 +39,12 @@ static function portal(){ // Create and Set Twilio Information. $token = (new \Runa_CCA\Model\Twilio())->getTwilioToken($_SESSION['client_name']); + // DB Connection + $dbConn = (new \Runa_CCA\Model\DB())->getIlluminateConnection(); + + // Update queues the operator has. + $_SESSION['operator_queue'] = \Runa_CCA\Model\Database\Operator::find($_SESSION['operator_id'])->queue; + // Set Session Data as global in Twig Template. $twig = $app->view()->getEnvironment(); $twig->addGlobal("session", $_SESSION); diff --git a/lib/Runa_CCA/Model/CallFlow/NewService/Conf.php b/lib/Runa_CCA/Model/CallFlow/NewService/Conf.php index 8fb3b28..11ad908 100644 --- a/lib/Runa_CCA/Model/CallFlow/NewService/Conf.php +++ b/lib/Runa_CCA/Model/CallFlow/NewService/Conf.php @@ -12,7 +12,7 @@ class Conf { /** * Constants */ - const QUEUE = "twilio MiniCC"; + const QUEUE = "twilio_MiniCC"; const INFO_URL = "/runa-cca/twilio/callflow/newservice/info"; const MOH_LONG = "http://com.twilio.sounds.music.s3.amazonaws.com/MARKOVICHAMP-Borghestral.mp3"; const MOH_SHORT = ""; diff --git a/lib/Runa_CCA/Model/Validator.php b/lib/Runa_CCA/Model/Validator.php index 9f5f756..123e058 100644 --- a/lib/Runa_CCA/Model/Validator.php +++ b/lib/Runa_CCA/Model/Validator.php @@ -66,9 +66,10 @@ static function validateOperator(array $params){ static function validateQueue(array $params){ $error_list = []; + $additionalChars = "#_-"; - if(!static::notEmpty()->alnum()->length(1,20)->validate($params["queue_id"])){ - $error_list["queue_id"] = "20字以内の半角の英数文字のみにしてください。"; + if(!static::notEmpty()->noWhitespace()->alnum($additionalChars)->length(1,20)->validate($params["queue_id"])){ + $error_list["queue_id"] = "20字以内の半角の英数文字のみで、空白は入れないでください。特殊文字は{$additionalChars}のみです。"; } if(!static::notEmpty()->length(1,32)->validate($params["queue_name"])){ diff --git a/templates/Config/config_frame.twig b/templates/Config/config_frame.twig index e4451ec..053f4dd 100644 --- a/templates/Config/config_frame.twig +++ b/templates/Config/config_frame.twig @@ -40,6 +40,15 @@ ); newWin.focus(); } + + function popup_softphone(url){ + var newWin2 = window.open( + url, + "softphone", + "width=1000, height=300, location=no, menubar=no, toolbar=no, scrollbars=yes" + ); + newWin2.focus(); + } @@ -91,7 +100,7 @@