function gform_create_zendesk_ticket($entry, $form) { $binaryFile = file_get_contents(rgar($entry, '15')); $ext = pathinfo(rgar($entry, '15'), PATHINFO_EXTENSION); // Upload field ID $upload = curlUpload("/uploads.json", $binaryFile, 'upload.' . $ext); // Attachments will have the prettyname screenshot.[$ext] $token = $upload['upload']['token']; $create = json_encode(array('ticket' => array('subject' => rgar($entry, '5'), 'priority' => 'normal', 'comment' => array('body' => rgar($entry, '6'), 'uploads' => $token), 'requester' => array('name' => rgar($entry, '2.3') . ' ' . rgar($entry, '2.6'), 'email' => rgar($entry, '4'))))); return curlWrap("/tickets.json", $create, "POST"); }
<?php //Let's require the configuration require_once 'fb-config.php'; //Let's make things secure if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_USER'] == PHP_AUTH_USER && $_SERVER['PHP_AUTH_PW'] == PHP_AUTH_PW) { // We're in! $ticket_id = $_POST['ticket_id']; // 1 - We will check which page does this come from. For that we will retrieve the ticket first: $ticket = curlWrap("/tickets/" . $ticket_id . ".json", NULL, "GET"); $facebook_id = $ticket->ticket->via->source->to->facebook_id; $facebook_tag = $facebook_pages[$facebook_id]; // 2 - Update ticket with tag $object = array("ticket" => array("custom_fields" => array("id" => CUSTOM_FIELD_ID, "value" => $facebook_tag))); $request = curlWrap("/tickets/" . $ticket_id . ".json", json_encode($object), "PUT"); } else { // Your credentials are not valid. header("HTTP/1.1 401 Unauthorized"); exit; } function curlWrap($url, $json, $action) { $ch = curl_init(); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_URL, "https://" . ZD_SUBDOMAIN . ".zendesk.com/api/v2" . $url); curl_setopt($ch, CURLOPT_USERPWD, ZD_EMAIL . "/token:" . ZD_TOKEN); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); switch ($action) { case "POST": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
<?php define("ZDAPIKEY", "E1pjHWn9hlDb44miyxbM9KP4p18uDM224MemOqT8"); define("ZDUSER", "*****@*****.**"); define("ZDURL", "https://foss4g.zendesk.com/api/v2"); function curlWrap($url, $json) { $ch = curl_init(); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_URL, ZDURL . $url); curl_setopt($ch, CURLOPT_USERPWD, ZDUSER . "/token:" . ZDAPIKEY); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $output = curl_exec($ch); curl_close($ch); $decoded = json_decode($output); return $decoded; } foreach ($_POST as $key => $value) { if (preg_match('/^z_/i', $key)) { $arr[strip_tags($key)] = strip_tags($value); } } $create = json_encode(array('ticket' => array('subject' => $arr['z_subject'], 'comment' => array("body" => $arr['z_description']), 'requester' => array('name' => $arr['z_name'], 'email' => $arr['z_requester'])))); $return = curlWrap("/tickets.json", $create); header('Location: ' . $_SERVER['HTTP_REFERER']);
curl_setopt($ch, CURLOPT_URL, ZDURL . $url); curl_setopt($ch, CURLOPT_USERPWD, ZDUSER . "/token:" . ZDAPIKEY); switch ($action) { case "POST": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); break; case "GET": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); break; case "PUT": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); break; case "DELETE": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); break; default: break; } curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $output = curl_exec($ch); curl_close($ch); $decoded = json_decode($output); return $decoded; } $data = curlWrap("/tickets.json", $json, "POST");
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_URL, ZDURL . $url); curl_setopt($ch, CURLOPT_USERPWD, ZDUSER . "/token:" . ZDAPIKEY); switch ($action) { case "POST": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); break; case "GET": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); break; default: break; } curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $output = curl_exec($ch); curl_close($ch); $decoded = json_decode($output); return $decoded; } foreach ($_POST as $key => $value) { if (preg_match('/^z_/i', $key)) { $arr[strip_tags($key)] = strip_tags($value); } } $create = json_encode(array('ticket' => array('subject' => $arr['z_subject'], 'comment' => array("body" => $arr['z_description']), 'requester' => array('name' => $arr['z_name'], 'email' => $arr['z_requester'])))); $return = curlWrap("/tickets.json", $create, "POST");
break; case "GET": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); break; case "PUT": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); break; case "DELETE": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); break; default: break; } curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $output = curl_exec($ch); curl_close($ch); $decoded = json_decode($output); return $decoded; } // CREATE AN ARRAY WITH POST DATA AND DESIRED TICKET CONTENT/ATTRIBUTES $arr = array("new_req_name" => 'Tim Foster', "new_req_email" => '*****@*****.**', "new_tick_assignee" => "279358764", "new_tick_subj" => 'New Order Test Test Test', "new_tick_desc" => 'Test Description'); // CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API $create = json_encode(array('ticket' => array('requester' => array('name' => $arr['new_req_name'], 'email' => $arr['new_req_email']), 'group_id' => $arr['new_tick_group'], 'assignee_id' => $arr['new_tick_assignee'], 'subject' => $arr['new_tick_subj'], 'description' => $arr['new_tick_desc'])), JSON_FORCE_OBJECT); $data = curlWrap("/tickets.json", $create, "POST"); var_dump($data); print $data->ticket->id; print "\n";
$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();