示例#1
0
include 'Zendesk.lib.php';
ini_set('display_errors', 0);
error_reporting(0);
define("ZD_SITE", 'xxxxx.zendesk.com');
define("ZD_USER", '*****@*****.**');
define("ZD_PASS", 'xxxxxxxx');
define("ZD_FIELD", 'xxxxxxxx');
define("PLACEHOLDEREMAIL", ZD_USER);
define("EMAIL_DOMAIN", 'youremaildomain.com');
if (isset($_REQUEST)) {
    $from = isset($_REQUEST['From']) ? urldecode($_REQUEST['From']) : 'bad phone number';
    $body = isset($_REQUEST['Body']) ? $_REQUEST['Body'] : 'An error occured from this number: ' . $from;
    $zd = new Zendesk(ZD_SITE, ZD_USER, ZD_PASS);
    $from = urlencode($from);
    $from_search = str_replace('+', '', $from);
    $result = $zd->get(ZENDESK_SEARCH, array('query' => "query=type:ticket+status:new+status:open+" . "status:pending+order_by:updated_at+sort:desc+" . "fieldvalue:{$from_search}"));
    //echo $result;
    $result = json_decode($result);
    //var_dump( $result );
    //$attr = $xml->attributes();
    if ($result->count > 0) {
        //print_r($result->results);
        $first_ticket = $result->results[0];
        $ticket_id = $first_ticket->id;
        // incoming sms has the same From as an open ticket, just append
        $result = $zd->update(ZENDESK_TICKETS, array('details' => array('is-public' => true, 'comment' => array("body" => $body, "public" => "true"), 'subject' => substr($body, 0, 80)), 'id' => $ticket_id));
    } else {
        // incoming sms has a new From, so create a new ticket
        $result = $zd->create(ZENDESK_TICKETS, array('details' => array('comment' => array(body => $body), 'subject' => substr($body, 0, 80), 'requester' => array("name" => $from_search, "email" => uniqid() . EMAIL_DOMAIN), 'custom_fields' => array(array('id' => ZD_FIELD, 'value' => $from)))));
    }
}