Create Ticket or Voicemail Ticket

#### Allowed For * Agents ### Creating tickets #### Introduction Creating tickets using Talk Partner Edition follows the same conventions as the Create Ticket endpoint.

Script zendesk Verified

by hugo697 ยท 11/7/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 377 days ago
1
type Zendesk = {
2
  username: string;
3
  password: string;
4
  subdomain: string;
5
};
6
/**
7
 * Create Ticket or Voicemail Ticket
8
 * #### Allowed For
9
* Agents
10

11
### Creating tickets
12

13
#### Introduction
14

15
Creating tickets using Talk Partner Edition follows the same conventions as the Create Ticket endpoint.
16
 */
17
export async function main(
18
  auth: Zendesk,
19
  body: {
20
    display_to_agent?: string;
21
    ticket?: {
22
      comment?: {
23
        attachments?: {
24
          content_type?: string;
25
          content_url?: string;
26
          deleted?: string;
27
          file_name?: string;
28
          height?: string;
29
          id?: string;
30
          inline?: string;
31
          malware_access_override?: string;
32
          malware_scan_result?: string;
33
          mapped_content_url?: string;
34
          size?: string;
35
          thumbnails?: {
36
            content_type?: string;
37
            content_url?: string;
38
            deleted?: string;
39
            file_name?: string;
40
            height?: string;
41
            id?: string;
42
            inline?: string;
43
            malware_access_override?: string;
44
            malware_scan_result?: string;
45
            mapped_content_url?: string;
46
            size?: string;
47
            url?: string;
48
            width?: string;
49
            [k: string]: unknown;
50
          }[];
51
          url?: string;
52
          width?: string;
53
          [k: string]: unknown;
54
        }[];
55
        audit_id?: string;
56
        author_id?: string;
57
        body?: string;
58
        created_at?: string;
59
        html_body?: string;
60
        id?: string;
61
        metadata?: { dolored71?: string; [k: string]: unknown };
62
        plain_body?: string;
63
        public?: string;
64
        type?: string;
65
        uploads?: string[];
66
        via?: {
67
          channel?: string;
68
          source?: {
69
            esse08?: number;
70
            ide93?: boolean;
71
            in_2c?: number;
72
            laborecdb?: string;
73
            laboris01?: string;
74
            [k: string]: unknown;
75
          };
76
          [k: string]: unknown;
77
        };
78
        [k: string]: unknown;
79
      };
80
      priority?: string;
81
      via_id?: number;
82
      voice_comment?: {
83
        answered_by_id?: string;
84
        call_duration?: string;
85
        from?: string;
86
        location?: string;
87
        recording_url?: string;
88
        started_at?: string;
89
        to?: string;
90
        transcription_text?: string;
91
        [k: string]: unknown;
92
      };
93
      [k: string]: unknown;
94
    };
95
    [k: string]: unknown;
96
  }
97
) {
98
  const url = new URL(
99
    `https://${auth.subdomain}.zendesk.com/api/v2/channels/voice/tickets`
100
  );
101

102
  const response = await fetch(url, {
103
    method: "POST",
104
    headers: {
105
      "Content-Type": "application/json",
106
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
107
    },
108
    body: JSON.stringify(body),
109
  });
110
  if (!response.ok) {
111
    const text = await response.text();
112
    throw new Error(`${response.status} ${text}`);
113
  }
114
  return await response.json();
115
}
116