Talk Partner Edition API
Talk Partner Edition lets organizations choose their own call center software and integrate it with Zendesk’s omnichannel solution. For more information, seeUnderstanding Talk Partner Edition. See also theTalk Partner Edition APIin the Voice API reference docs.
Open Ticket in Agent's Browser
POST /api/v2/channels/voice/agents/{agent_id}/tickets/{ticket_id}/display
Allows you to instruct an agent's browser to open a ticket.
When the message is successfully delivered to an agent's browser:
Status: 200 OK
Whenagent_id
orticket_id
is invalid:
Status: 404 Not Found
Allowed For
- Agents
Parameters
Name | Type | In | Required | Description |
---|---|---|---|---|
agent_id | integer | Path | true | ID of an agent |
ticket_id | integer | Path | true | The ID of the ticket |
Code Samples
curl
curlhttps://{subdomain}.zendesk.com/api/v2/channels/voice/agents/{agent_id}/tickets/{ticket_id}/display.json\
-H"Content-Type: application/json"\
-v -u{email_address}:{password}-X POST
Go
import(
"fmt"
"io"
"net/http"
)
funcmain(){
url:="https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/tickets/123456/display"
method:="POST"
req,err:=http.NewRequest(method,url,nil)
iferr!=nil{
fmt.Println(err)
return
}
req.Header.Add("Content-Type","application/json")
req.Header.Add("Authorization","Basic
" )// Base64 encoded "username:password"client:=&http.Client{}
res,err:=client.Do(req)
iferr!=nil{
fmt.Println(err)
return
}
deferres.Body.Close()
body,err:=io.ReadAll(res.Body)
iferr!=nil{
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Java
importcom.squareup.okhttp.*;
OkHttpClientclient=newOkHttpClient();
HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/tickets/123456/display")
.newBuilder();
请求Bodybody=请求Body.create(MediaType.parse("application/json"),
"""
""");
请求request=new请求.Builder()
.url(urlBuilder.build())
.method("POST",body)
.addHeader("Content-Type","application/json")
.addHeader("Authorization",Credentials.basic("your-email","your-password"))
.build();
Responseresponse=client.newCall(request).execute();
Nodejs
varaxios=require('axios');
varconfig={
method:'POST',
url:'https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/tickets/123456/display',
headers:{
'Content-Type':'application/json',
'Authorization':'Basic
' ,// Base64 encoded "username:password"},
};
axios(config)
.then(function(response){
console.log(JSON.stringify(response.data));
})
.catch(function(error){
console.log(error);
});
Python
importrequests
url="https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/tickets/123456/display"
headers={
"Content-Type":"application/json",
}
response=requests.request(
"POST",
url,
auth=('
' ,'' ),headers=headers
)
print(response.text)
Ruby
require"net/http"
uri=URI("https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/tickets/123456/display")
request=Net::HTTP::Post.new(uri,"Content-Type":"application/json")
request.basic_auth"username","password"
response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|
http.request(request)
end
Example response(s)
200 OK
// Status 200 OK
null
404 Not Found
// Status 404 Not Found
null
Open a User's Profile in an Agent's Browser
POST /api/v2/channels/voice/agents/{agent_id}/users/{user_id}/display
Allows you to instruct an agent's browser to open a user's profile.
When the message is successfully delivered to an agent's browser:
Status: 200 OK
Whenagent_id
orticket_id
is invalid:
Status: 404 Not Found
Allowed For
- Agents
Parameters
Name | Type | In | Required | Description |
---|---|---|---|---|
agent_id | integer | Path | true | ID of an agent |
user_id | integer | Path | true | The id of the user |
Code Samples
curl
curlhttps://{subdomain}.zendesk.com/api/v2/channels/voice/agents/{agent_id}/users/{user_id}/display.json\
-H"Content-Type: application/json"\
-v -u{email_address}:{password}-X POST
Go
import(
"fmt"
"io"
"net/http"
)
funcmain(){
url:="https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/users/35436/display"
method:="POST"
req,err:=http.NewRequest(method,url,nil)
iferr!=nil{
fmt.Println(err)
return
}
req.Header.Add("Content-Type","application/json")
req.Header.Add("Authorization","Basic
" )// Base64 encoded "username:password"client:=&http.Client{}
res,err:=client.Do(req)
iferr!=nil{
fmt.Println(err)
return
}
deferres.Body.Close()
body,err:=io.ReadAll(res.Body)
iferr!=nil{
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Java
importcom.squareup.okhttp.*;
OkHttpClientclient=newOkHttpClient();
HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/users/35436/display")
.newBuilder();
请求Bodybody=请求Body.create(MediaType.parse("application/json"),
"""
""");
请求request=new请求.Builder()
.url(urlBuilder.build())
.method("POST",body)
.addHeader("Content-Type","application/json")
.addHeader("Authorization",Credentials.basic("your-email","your-password"))
.build();
Responseresponse=client.newCall(request).execute();
Nodejs
varaxios=require('axios');
varconfig={
method:'POST',
url:'https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/users/35436/display',
headers:{
'Content-Type':'application/json',
'Authorization':'Basic
' ,// Base64 encoded "username:password"},
};
axios(config)
.then(function(response){
console.log(JSON.stringify(response.data));
})
.catch(function(error){
console.log(error);
});
Python
importrequests
url="https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/users/35436/display"
headers={
"Content-Type":"application/json",
}
response=requests.request(
"POST",
url,
auth=('
' ,'' ),headers=headers
)
print(response.text)
Ruby
require"net/http"
uri=URI("https://example.zendesk.com/api/v2/channels/voice/agents/385473779372/users/35436/display")
request=Net::HTTP::Post.new(uri,"Content-Type":"application/json")
request.basic_auth"username","password"
response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|
http.request(request)
end
Example response(s)
200 OK
// Status 200 OK
null
404 Not Found
// Status 404 Not Found
null
Create Ticket or Voicemail Ticket
POST /api/v2/channels/voice/tickets
Allowed For
- Agents
Creating tickets
Introduction
Creating tickets using Talk Partner Edition follows the same conventions as the Create Ticket endpoint. SeeCreate Ticket.
请求parameters
The POST request takes a mandatoryticket
object that lists the values to set when the ticket is created. You may also include an optionaldisplay_to_agent
value such as the ID of the agent that will see the newly created ticket.
Tickets created using this endpoint must have avia_id
parameter. See the following section for possible values.
Zendesk Talk Integration Via IDs
Tickets created using this endpoint must have one of the followingvia_id
parameters:
ID | Description |
---|---|
44 | Voicemail |
45 | Phone call (inbound) |
46 | Phone call (outbound) |
Creating voicemail tickets
请求parameters
The POST request takes a mandatoryticket
object that lists the values to set when the ticket is created. The ticket must have avoice_comment
with the following values:
Name | Type | Comment |
---|---|---|
from | string | Incoming phone number |
to | string | Dialed phone number |
recording_url | string | URL of the recording |
started_at | date | ISO 8601timestamp of the call starting time |
call_duration | integer | Duration in seconds of the call |
answered_by_id | integer | The agent who answered the call |
transcription_text | string | Transcription of the call (optional) |
location | string | Location of the caller (optional) |
Parameters
Name | Type | In | Required | Description |
---|---|---|---|---|
agent_id | integer | Path | true | ID of an agent |
ticket_id | integer | Path | true | The ID of the ticket |
Example body
{
"display_to_agent":1234,
"ticket":{
“评论”:{
"body":"My printer is on fire!"
},
"priority":"urgent",
"via_id":46,
"voice_comment":{
"answered_by_id":28,
"call_duration":40,
"from":"+16617480240",
"location":"Dublin, Ireland",
"recording_url":"http://yourdomain.com/recordings/1.mp3",
“started_at”:"2019-04-16T09:14:57Z",
"to":"+16617480123",
"transcription_text":"The transcription of the call"
}
}
}
Code Samples
curl
Create ticket
data.json
{
"display_to_agent":1234,
"ticket":{
"via_id":45,
"subject":"My printer is on fire!",
“评论”:{"body":"The smoke is very colorful."},
"priority":"urgent"
}
}
curl snippet
curlhttps://{subdomain}.zendesk.com/api/v2/channels/voice/tickets.json\
-d @data.json\
-H"Content-Type: application/json"-v -u{email_address}:{password}-X POST
curl
Create voicemail ticket
data.json
{
"ticket":{
"via_id":44,
"description":"Voicemail from: +16617480240",
"voice_comment":{
"from":"+16617480240",
"to":"+16617480123",
"recording_url":"http://yourdomain.com/recordings/1.mp3",
“started_at”:"2019-04-16T09:14:57Z",
"call_duration":40,
"answered_by_id":28,
"transcription_text":"The transcription of the call",
"location":"Dublin, Ireland"
}
}
}
curl snippet
curlhttps://{subdomain}.zendesk.com/api/v2/channels/voice/tickets.json\
-d @data.json\
-H"Content-Type: application/json"-v -u{email_address}:{password}-X POST
Go
import(
"fmt"
"io"
"net/http"
"strings"
)
funcmain(){
url:="https://example.zendesk.com/api/v2/channels/voice/tickets"
method:="POST"
payload:=strings.NewReader(`{
"display_to_agent": 1234,
"ticket": {
“评论”: {
"body": "My printer is on fire!"
},
"priority": "urgent",
"via_id": 46,
"voice_comment": {
"answered_by_id": 28,
"call_duration": 40,
"from": "+16617480240",
"location": "Dublin, Ireland",
"recording_url": "http://yourdomain.com/recordings/1.mp3",
“started_at”: "2019-04-16T09:14:57Z",
"to": "+16617480123",
"transcription_text": "The transcription of the call"
}
}
}`)
req,err:=http.NewRequest(method,url,payload)
iferr!=nil{
fmt.Println(err)
return
}
req.Header.Add("Content-Type","application/json")
req.Header.Add("Authorization","Basic
" )// Base64 encoded "username:password"client:=&http.Client{}
res,err:=client.Do(req)
iferr!=nil{
fmt.Println(err)
return
}
deferres.Body.Close()
body,err:=io.ReadAll(res.Body)
iferr!=nil{
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Java
importcom.squareup.okhttp.*;
OkHttpClientclient=newOkHttpClient();
HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/channels/voice/tickets")
.newBuilder();
请求Bodybody=请求Body.create(MediaType.parse("application/json"),
"""
{
\"display_to_agent\":1234,
\"ticket\":{
\"comment\":{
\"body\":\"Myprinterison fire!\"
},
\"priority\":\"urgent\",
\"via_id\":46,
\"voice_comment\":{
\"answered_by_id\":28,
\"call_duration\":40,
\"from\":\"+16617480240\",
\"location\":\"Dublin,Ireland\",
\"recording_url\":\"http://yourdomain.com/recordings/1.mp3 \”,
\"started_at\":\"2019-04-16T09:14:57Z\",
\"to\":\"+16617480123\",
\"transcription_text\":\"Thetranscriptionofthe call\"
}
}
}""");
请求request=new请求.Builder()
.url(urlBuilder.build())
.method("POST",body)
.addHeader("Content-Type","application/json")
.addHeader("Authorization",Credentials.basic("your-email","your-password"))
.build();
Responseresponse=client.newCall(request).execute();
Nodejs
varaxios=require('axios');
vardata=JSON.stringify({
"display_to_agent":1234,
"ticket":{
“评论”:{
"body":"My printer is on fire!"
},
"priority":"urgent",
"via_id":46,
"voice_comment":{
"answered_by_id":28,
"call_duration":40,
"from":"+16617480240",
"location":"Dublin, Ireland",
"recording_url":"http://yourdomain.com/recordings/1.mp3",
“started_at”:"2019-04-16T09:14:57Z",
"to":"+16617480123",
"transcription_text":"The transcription of the call"
}
}
});
varconfig={
method:'POST',
url:'https://example.zendesk.com/api/v2/channels/voice/tickets',
headers:{
'Content-Type':'application/json',
'Authorization':'Basic
' ,// Base64 encoded "username:password"},
data:data,
};
axios(config)
.then(function(response){
console.log(JSON.stringify(response.data));
})
.catch(function(error){
console.log(error);
});
Python
importrequests
importjson
url="https://example.zendesk.com/api/v2/channels/voice/tickets"
payload=json.loads("""{
"display_to_agent": 1234,
"ticket": {
“评论”: {
"body": "My printer is on fire!"
},
"priority": "urgent",
"via_id": 46,
"voice_comment": {
"answered_by_id": 28,
"call_duration": 40,
"from": "+16617480240",
"location": "Dublin, Ireland",
"recording_url": "http://yourdomain.com/recordings/1.mp3",
“started_at”: "2019-04-16T09:14:57Z",
"to": "+16617480123",
"transcription_text": "The transcription of the call"
}
}
}""")
headers={
"Content-Type":"application/json",
}
response=requests.request(
"POST",
url,
auth=('
' ,'' ),headers=headers,
json=payload
)
print(response.text)
Ruby
require"net/http"
uri=URI("https://example.zendesk.com/api/v2/channels/voice/tickets")
request=Net::HTTP::Post.new(uri,"Content-Type":"application/json")
request.body=%q({
"display_to_agent":1234,
"ticket":{
“评论”:{
"body":"My printer is on fire!"
},
"priority":"urgent",
"via_id":46,
"voice_comment":{
"answered_by_id":28,
"call_duration":40,
"from":"+16617480240",
"location":"Dublin, Ireland",
"recording_url":"http://yourdomain.com/recordings/1.mp3",
“started_at”:"2019-04-16T09:14:57Z",
"to":"+16617480123",
"transcription_text":"The transcription of the call"
}
}
})
request.basic_auth"username","password"
response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|
http.request(request)
end
Example response(s)
201 Created
// Status 201 Created
{
"ticket":{
"assignee_id":235323,
"collaborator_ids":[
35334,
234
],
"created_at":"2009-07-20T22:55:29Z",
"custom_fields":[
{
"id":27642,
"value":"745"
},
{
"id":27648,
"value":"yes"
}
],
"custom_status_id":123,
"description":"The fire is very colorful.",
"due_at":null,
"external_id":"ahg35h3jh",
"follower_ids":[
35334,
234
],
"from_messaging_channel":false,
"group_id":98738,
"has_incidents":false,
"id":35436,
"organization_id":509974,
"priority":"high",
"problem_id":9873764,
"raw_subject":"{{dc.printer_on_fire}}",
"recipient":"(邮件prote来cted]",
"requester_id":20978392,
"satisfaction_rating":{
“评论”:"Great support!",
"id":1234,
"score":"good"
},
"sharing_agreement_ids":[
84432
],
"status":"open",
"subject":"Help, my printer is on fire!",
"submitter_id":76872,
"tags":[
"enterprise",
"other_tag"
],
"type":"incident",
"updated_at":"2011-05-05T10:38:52Z",
"url":"https://company.zendesk.com/api/v2/tickets/35436.json",
"via":{
"channel":"web"
}
}
}
404 Not Found
// Status 404 Not Found
null