コード例 #1
0
ファイル: TwimlDial.php プロジェクト: ryanlarrabure/OpenVBX
 public function __construct($settings = array())
 {
     $this->response = new TwimlResponse();
     $this->cookie_name = 'state-' . AppletInstance::getInstanceId();
     $this->version = AppletInstance::getValue('version', null);
     $this->callerId = AppletInstance::getValue('callerId', null);
     if (empty($this->callerId) && !empty($_REQUEST['From'])) {
         $this->callerId = $_REQUEST['From'];
     }
     /* Get current instance	 */
     $this->dial_whom_selector = AppletInstance::getValue('dial-whom-selector');
     $this->dial_whom_user_or_group = AppletInstance::getUserGroupPickerValue('dial-whom-user-or-group');
     $this->dial_whom_number = AppletInstance::getValue('dial-whom-number');
     $this->no_answer_action = AppletInstance::getValue('no-answer-action', 'hangup');
     $this->no_answer_group_voicemail = AppletInstance::getAudioSpeechPickerValue('no-answer-group-voicemail');
     $this->no_answer_redirect = AppletInstance::getDropZoneUrl('no-answer-redirect');
     $this->no_answer_redirect_number = AppletInstance::getDropZoneUrl('no-answer-redirect-number');
     $this->dial_whom_instance = get_class($this->dial_whom_user_or_group);
     if (count($settings)) {
         foreach ($settings as $setting => $value) {
             if (isset($this->{$setting})) {
                 $this->{$setting} = $value;
             }
         }
     }
 }
コード例 #2
0
ファイル: TwimlDial.php プロジェクト: JeffaCubed/OpenVBX
 public function __construct()
 {
     $this->response = new Response();
     $this->cookie_name = 'state-' . AppletInstance::getInstanceId();
     $this->version = AppletInstance::getValue('version', null);
     $this->callerId = AppletInstance::getValue('callerId', null);
     if (empty($this->callerId)) {
         $this->callerId = $_REQUEST['From'];
     }
     /* Get current instance	 */
     $this->dial_whom_selector = AppletInstance::getValue('dial-whom-selector');
     $this->dial_whom_user_or_group = AppletInstance::getUserGroupPickerValue('dial-whom-user-or-group');
     $this->dial_whom_number = AppletInstance::getValue('dial-whom-number');
     $this->no_answer_action = AppletInstance::getValue('no-answer-action', 'hangup');
     $this->no_answer_group_voicemail = AppletInstance::getAudioSpeechPickerValue('no-answer-group-voicemail');
     $this->no_answer_redirect = AppletInstance::getDropZoneUrl('no-answer-redirect');
     $this->no_answer_redirect_number = AppletInstance::getDropZoneUrl('no-answer-redirect-number');
 }
コード例 #3
0
                    $user = VBX_User::get($user->user_id);
                    foreach ($user->devices as $device) {
                        if ($sender == $device->value) {
                            $dispatch = true;
                        }
                    }
                }
        }
    }
}
$response = new TwimlResponse();
if ($dispatch) {
    $subscribers = $ci->db->query(sprintf('SELECT value FROM subscribers WHERE list = %d', $list))->result();
    require_once APPPATH . 'libraries/Services/Twilio.php';
    $service = new Services_Twilio($ci->twilio_sid, $ci->twilio_token);
    if ($body && count($subscribers)) {
        foreach ($subscribers as $subscriber) {
            $service->account->sms_messages->create($number, $subscriber->value, $body);
        }
    }
    $dispatched = AppletInstance::getDropZoneUrl('dispatched');
    if (!empty($dispatched)) {
        $response->redirect($dispatched);
    }
} else {
    $next = AppletInstance::getDropZoneUrl('next');
    if (!empty($next)) {
        $response->redirect($next);
    }
}
$response->respond();
コード例 #4
0
ファイル: twiml.php プロジェクト: johndbritton/DopplrVBX
<?php

require_once dirname(__FILE__) . '/../../lib/dopplr.php';
$user = OpenVBX::getCurrentUser();
$dopplr_token = PluginData::get("dopplr_token_{$user->id}", "");
$dopplr = new Dopplr($dopplr_token);
$response = new Response();
$response->addSay($dopplr->timezone());
$response->addRedirect(AppletInstance::getDropZoneUrl('next'));
$response->Respond();
コード例 #5
0
ファイル: twiml.php プロジェクト: hharrysidhu/OpenVBX
<?php

$response = new TwimlResponse();
$now = date_create('now');
$today = date_format($now, 'N') - 1;
/**
 * The names of the applet instance variables for "from" and "to" times
 * are of the form: "range_n_from" and "range_n_to" where "n"
 * is a value between 0 and 6 (inclusive). 0 represents Monday
 * and 6 represents Sunday. In PHP, the value of date_format($now, 'w')
 * for Sunday is 0 - for Monday the value is 1 - and so on.
 * Here, we need to compensate for this by checking to see if the value
 * of date_format($now, 'w') - 1 is -1, and, if so, bring Sunday
 * back into the valid range of values by setting $today to 6.
 */
if ($today == -1) {
    $today = 6;
}
$response->redirect(AppletInstance::getDropZoneUrl(($from = AppletInstance::getValue("range_{$today}_from")) && ($to = AppletInstance::getValue("range_{$today}_to")) && date_create($from) <= $now && $now < date_create($to) ? 'open' : 'closed'));
$response->respond();
コード例 #6
0
$response = new Response();
$fallback = AppletInstance::getDropZoneUrl('fallback');
$choices = AppletInstance::getValue('choices[]');
$start = AppletInstance::getValue('timestart[]');
$finish = AppletInstance::getValue('timefinish[]');
$ci_timezone = AppletInstance::getValue('timezones');
$ci =& get_instance();
$choice_array = array();
if (count($start) == 1) {
    $new_start = array(0 => $start);
    $start = $new_start;
    $new_finish = array(0 => $finish);
    $finish = $new_finish;
}
foreach ($choices as $a => $q) {
    $choice_array[$a] = AppletInstance::getDropZoneUrl('choices[' . $a . ']');
}
function verify_day($key, $today)
{
    $sunday = AppletInstance::getValue('sunday[]');
    $monday = AppletInstance::getValue('monday[]');
    $tuesday = AppletInstance::getValue('tuesday[]');
    $wednesday = AppletInstance::getValue('wednesday[]');
    $thursday = AppletInstance::getValue('thursday[]');
    $friday = AppletInstance::getValue('friday[]');
    $saturday = AppletInstance::getValue('saturday[]');
    $days = array(0 => is_array($sunday) && array_key_exists($key, $sunday) ? $sunday[$key] : $sunday, 1 => is_array($monday) && array_key_exists($key, $monday) ? $monday[$key] : $monday, 2 => is_array($tuesday) && array_key_exists($key, $tuesday) ? $tuesday[$key] : $tuesday, 3 => is_array($wednesday) && array_key_exists($key, $wednesday) ? $wednesday[$key] : $wednesday, 4 => is_array($thursday) && array_key_exists($key, $thursday) ? $thursday[$key] : $thursday, 5 => is_array($friday) && array_key_exists($key, $friday) ? $friday[$key] : $friday, 6 => is_array($saturday) && array_key_exists($key, $saturday) ? $saturday[$key] : $saturday);
    return $days[$today];
}
function verify_time($currentTime, $startTime, $endTime)
{
コード例 #7
0
<?php

$ci =& get_instance();
$list = AppletInstance::getValue('list');
if (!empty($_REQUEST['From'])) {
    $number = normalize_phone_to_E164($_REQUEST['From']);
    $subscriber = $ci->db->query(sprintf('SELECT id FROM subscribers WHERE list = %d AND value = %s', $list, $number))->num_rows() > 0;
    $next = AppletInstance::getDropZoneUrl($subscriber ? 'pass' : 'fail');
}
$response = new TwimlResponse();
if (!empty($next)) {
    $response->redirect($next);
}
$response->respond();
コード例 #8
0
    $response = curlWrap("/tickets.json", json_encode(array("ticket" => array("subject" => "New Phone Call From " . $phone, "comment" => array("body" => "Call made at " . date('r')), "requester_id" => $response['user']['id']))), "POST");
} else {
    if ($response['count'] > 0) {
        function filterAnon($elem)
        {
            $bool = strpos($elem['name'], "Unknown") === false && strpos($elem['name'], "Anonymous") === false;
            return $bool;
        }
        //filter out unknown and anonymous users
        $known = array_values(array_filter($response['results'], 'filterAnon'));
        if (sizeof($known) > 0) {
            //new ticket with known user as requestor
            $knownUser = $known[0];
            $response = curlWrap("/tickets.json", json_encode(array("ticket" => array("subject" => "New Phone Call From " . $knownUser['name'] . " | " . $phone, "comment" => array("body" => "Call came in at " . date('r')), "requester_id" => $knownUser['id']))), "POST");
        } else {
            //new ticket with existing unknown user as requestor
            $response = curlWrap("/tickets.json", json_encode(array("ticket" => array("subject" => "New Phone Call From " . $phone, "comment" => array("body" => "Call came in at " . date('r')), "requester_id" => $response['results'][0]['id']))), "POST");
        }
    }
}
// openvbx code below
// $primary is getting the url created by what ever applet was put
// into the primary dropzone
$primary = AppletInstance::getDropZoneUrl('primary');
// As long as the primary dropzone is not empty add the redirect
// twiml to $response
if (!empty($primary)) {
    $tResponse->redirect($primary);
}
// This will create the twiml for hellomonkey
$tResponse->respond();
コード例 #9
0
        Stripe::setApiKey($settings['api_key']);
        try {
            $charge = Stripe_Charge::create(array('card' => $state['card'], 'amount' => $amount, 'currency' => 'usd', 'description' => $description));
            if ($charge->paid && true === $charge->paid) {
                setcookie(STRIPE_COOKIE);
                $next = AppletInstance::getDropZoneUrl('success');
                if (!empty($next)) {
                    $response->redirect($next);
                }
                $response->respond();
                die;
            }
        } catch (Exception $e) {
            $error = $e->getCode();
            $response->addSay($e->getMessage());
            if (array_key_exists($error, $card_errors)) {
                $state[STRIPE_ACTION] = $card_errors[$error];
                $response->redirect();
            } else {
                setcookie(STRIPE_COOKIE);
                $next = AppletInstance::getDropZoneUrl('fail');
                if (!empty($next)) {
                    $response->redirect($next);
                }
                $response->respond();
                die;
            }
        }
}
setcookie(STRIPE_COOKIE, json_encode($state), time() + 5 * 60);
$response->respond();
コード例 #10
0
<?php

$response = new Response();
$url = AppletInstance::getValue('url');
$next = AppletInstance::getDropZoneUrl('next');
$fallback = AppletInstance::getDropZoneUrl('fallback');
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($result)) {
    $response->addSay('that didnt work');
    $response->addRedirect($fallback);
    $response->Respond();
} else {
    $response->addSay($result);
    $response->addRedirect($next);
    $response->Respond();
}
コード例 #11
0
<?php

$body = isset($_REQUEST['Body']) ? trim($_REQUEST['Body']) : null;
$keys = (array) AppletInstance::getValue('keys[]');
$responses = (array) AppletInstance::getDropZoneUrl('responses[]');
$menu_items = AppletInstance::assocKeyValueCombine($keys, $responses);
$next = AppletInstance::getDropZoneUrl('invalid-option');
$response = new TwimlResponse();
foreach ($menu_items as $regex => $redirect) {
    if (!empty($regex) && preg_match("/" . $regex . "/i", $body)) {
        $next = $redirect;
        break;
    }
}
if (!empty($next)) {
    $response->redirect($next);
}
$response->respond();
コード例 #12
0
<?php

require_once __DIR__ . '/functions.php';
$duration = AppletInstance::getValue('duration');
$enabled = AppletInstance::getValue('enabled');
$instance_id = AppletInstance::getInstanceId();
$limit = AppletInstance::getValue('limit');
$blocked_applet = AppletInstance::getDropZoneUrl('blocked');
$unblocked_applet = AppletInstance::getDropZoneUrl('unblocked');
//$flow_type = AppletInstance::getFlowType();
$response = new TwimlResponse();
if (limit_exceeded($duration, $enabled, $instance_id, $limit)) {
    //number over limit
    $response->redirect($blocked_applet);
} else {
    //number within limit
    $response->redirect($unblocked_applet);
}
$response->respond();
コード例 #13
0
<?php

include "foursquare_api.php";
$user = AppletInstance::getUserGroupPickerValue('4sq-venue-controller');
$user_id = $user->values["id"];
$foursquare_username = PluginStore::get("foursquare_username_{$user_id}", "");
$foursquare_password = PluginStore::get("foursquare_password_{$user_id}", "");
$default = AppletInstance::getDropZoneUrl('no-venue-default-action');
$response = new Response();
if (!empty($foursquare_username)) {
    $lastVenue = getLastVenue($foursquare_username, $foursquare_password);
    $venues = AppletInstance::getValue('venues[]');
    $venue_options = AppletInstance::getDropZoneUrl('venue-options[]');
    $found = false;
    if (is_array($keys)) {
        foreach ($venues as $id => $value) {
            if ($value == $lastVenue) {
                $response->addRedirect($venue_options[$id]);
                $found = true;
            }
        }
    }
    if (!$found) {
        $response->addRedirect($default);
    }
} else {
    $response->addRedirect($default);
}
$response->Respond();
コード例 #14
0
<?php

$body = isset($_REQUEST['Body']) ? trim($_REQUEST['Body']) : null;
$body = strtolower($body);
$invalid_option = AppletInstance::getDropZoneUrl('invalid-option');
$keys = (array) AppletInstance::getValue('keys[]');
$responses = (array) AppletInstance::getDropZoneUrl('responses[]');
$menu_items = AppletInstance::assocKeyValueCombine($keys, $responses, 'strtolower');
$response = new TwimlResponse();
if (array_key_exists($body, $menu_items) && !empty($menu_items[$body])) {
    $response->redirect($menu_items[$body]);
} elseif (!empty($invalid_option)) {
    $response->redirect($invalid_option);
}
$response->respond();
コード例 #15
0
ファイル: twiml.php プロジェクト: JeffaCubed/OpenVBX
<?php

$response = new Response();
/* Fetch all the data to operate the menu */
$digits = isset($_REQUEST['Digits']) ? $_REQUEST['Digits'] : false;
$prompt = AppletInstance::getAudioSpeechPickerValue('prompt');
$invalid_option = AppletInstance::getAudioSpeechPickerValue('invalid-option');
$repeat_count = AppletInstance::getValue('repeat-count', 3);
$next = AppletInstance::getDropZoneUrl('next');
$selected_item = false;
/* Build Menu Items */
$choices = (array) AppletInstance::getDropZoneUrl('choices[]');
$keys = (array) AppletInstance::getDropZoneValue('keys[]');
$menu_items = AppletInstance::assocKeyValueCombine($keys, $choices);
$numDigits = 1;
foreach ($keys as $key) {
    if (strlen($key) > $numDigits) {
        $numDigits = strlen($key);
    }
}
if ($digits !== false) {
    if (!empty($menu_items[$digits])) {
        $selected_item = $menu_items[$digits];
    } else {
        if ($invalid_option) {
            $verb = AudioSpeechPickerWidget::getVerbForValue($invalid_option, null);
            $response->append($verb);
            $response->addRedirect();
        } else {
            $response->addSay('You selected an incorrect option.');
            $response->addRedirect();
コード例 #16
0
ファイル: twiml.php プロジェクト: benrasmusen/OpenVBX
define('DIAL_STATE_RECORDING', 'dialStateRecording');
define('DIAL_STATE_HANGUP', 'dialStateHangup');
$response = new Response();
// Default State
$state = array();
$state[DIAL_ACTION] = DIAL_STATE_DIAL;
$state[DIAL_NUMBER_INDEX] = 0;
$version = AppletInstance::getValue('version', null);
/* Get current instance	 */
$dial_whom_selector = AppletInstance::getValue('dial-whom-selector');
$dial_whom_user_or_group = AppletInstance::getUserGroupPickerValue('dial-whom-user-or-group');
$dial_whom_number = AppletInstance::getValue('dial-whom-number');
$no_answer_action = AppletInstance::getValue('no-answer-action', 'hangup');
$no_answer_group_voicemail = AppletInstance::getAudioSpeechPickerValue('no-answer-group-voicemail');
$no_answer_redirect = AppletInstance::getDropZoneUrl('no-answer-redirect');
$no_answer_redirect_number = AppletInstance::getDropZoneUrl('no-answer-redirect-number');
$numbers = array();
$voicemail = null;
if ($dial_whom_selector === 'user-or-group') {
    $dial_whom_instance = null;
    if (is_object($dial_whom_user_or_group)) {
        $dial_whom_instance = get_class($dial_whom_user_or_group);
    }
    switch ($dial_whom_instance) {
        case 'VBX_User':
            foreach ($dial_whom_user_or_group->devices as $device) {
                if ($device->is_active == 1) {
                    $numbers[] = $device->value;
                }
            }
            $voicemail = $dial_whom_user_or_group->voicemail;
コード例 #17
0
<?php

include "foursquare_api.php";
$user = AppletInstance::getUserGroupPickerValue('4sq-cat-controller');
$user_id = $user->values["id"];
$foursquare_username = PluginStore::get("foursquare_username_{$user_id}", "");
$foursquare_password = PluginStore::get("foursquare_password_{$user_id}", "");
$default = AppletInstance::getDropZoneUrl('4sq-cat-default-action');
$response = new Response();
if (!empty($foursquare_username)) {
    $lastVenue = getLastVenue($foursquare_username, $foursquare_password);
    $category = getCategory($lastVenue);
    $categories = AppletInstance::getValue('categories[]');
    $category_options = AppletInstance::getDropZoneUrl('category_options[]');
    $found = false;
    if (is_array($categories)) {
        foreach ($categories as $id => $value) {
            if ($value == $category) {
                $response->addRedirect($category_options[$id]);
                $found = true;
            }
        }
    }
    if (!$found) {
        $response->addRedirect($default);
    }
} else {
    $response->addRedirect($default);
}
$response->Respond();