-
Notifications
You must be signed in to change notification settings - Fork 344
Contacts
Caution
This documentation may no longer be current. Click here to view the updated content on our Developer Portal.
The Calling SDK consists of various modules which are created at the time of its initialization. Among these integral modules, one noteworthy component is the ContactClient
. For an introduction, we recommend consulting our Quickstart guide which will walk you through the step-by-step process of creating a calling instance and provide insights into the instantiation of various modules. By the end of this article, you will have a solid grasp of how to leverage ContactClient
to enhance your application's calling capabilities and create a seamless user experience.
To instantiate a ContactClient
object:
const contacts = calling.contactClient;
The getContacts()
method retrieves the contacts and respective contact groups for a user.
const contactListResponse = await contacts.getContacts();
Parameters | -- |
Returns | Promise<ContactResponse> |
Here's the prototype for the response returned by the getContacts()
method:
{
statusCode: number;
data: {
contacts?: Contact[];
groups?: ContactGroup[];
contact?: Contact;
group?: ContactGroup;
error?: string;
};
message: string | null;
};
Here's an example response for the getContacts()
method:
{
"statusCode": 200,
"data": {
"contacts": [
{
"meta": {
"created": "2023-08-31T13:19:15.631Z",
"lastModified": "2023-08-31T13:19:15.631Z"
},
"contactId": "bd8c0601-e2d6-48ff-8559-72fec60131ad",
"contactType": "CUSTOM",
"avatarUrlDomain": "avatar-prod-us-east-2.webexcontent.com",
"displayName": "John Doe",
"phoneNumbers": [
{
"type": "work",
"value": "1232323"
}
],
"encryptionKeyUrl": "kms://cisco.com/keys/ed180173-04ac-****-****-a9f0155f902f",
"isMigration": false,
"ownerId": "a126d98a-6570-487b-87a5-933dd3e97539",
"groups": ["f5d524df-3479-43c6-a7fd-5fab47b87cab"]
}
],
"groups": [
{
"meta": {
"created": "2021-05-05T09:39:35.067Z",
"lastModified": "2021-05-05T09:39:35.067Z"
},
"groupId": "1b2af605-de8a-469f-b5ba-9becdae8b67d",
"groupType": "NORMAL",
"ownerId": "a126d98a-6570-487b-87a5-933dd3e97539",
"displayName": "Other contacts",
"encryptionKeyUrl": "kms://cisco.com/keys/ed180173-04ac-415f-8665-a9f0155f902f",
"isMigration": false
}
]
},
"message": "SUCCESS"
}
This API helps to create the contact for the user. There are two ways to create contacts.
- CUSTOM - These are the contacts created by a user manually that are not present in a user's organization.
- CLOUD - These are Directory Contacts from the user's organization.
Operation | Contact Type | Required Parameters |
---|---|---|
Creating Personal contacts | CUSTOM |
displayName , contactType
|
Adding Contacts from Directory | CLOUD |
contactId , contactType
|
This API accepts the Contact object as a parameter. It consists of various attributes covered in the following table:
Name | Description | Type | Required | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
addressInfo |
Address information. | Address Type { } | No | |||||||||
avatarURL |
Avatar URL | string | No | |||||||||
avatarUrlDomain |
Domain of Avatar URL. | string | No | |||||||||
companyName |
Company name of the contact. | string | No | |||||||||
contactId |
The contactId of the person. The same as a userId in the case of a CLOUD contact.
|
string | Required only for CLOUD | |||||||||
contactType |
Type of contact, CUSTOM or CLOUD.
|
ContactType
|
Yes | |||||||||
department |
Contact's department. | string | No | |||||||||
displayName |
Display name for the group. | string | Required only for CUSTOM. | |||||||||
emails |
Email addresses of the contact. |
[ ]
|
No | |||||||||
encryptionKeyUrl |
EncryptionKeyUrl for the content key to be used.
|
string | No | |||||||||
firstName |
First Name | string | No | |||||||||
groups |
Group IDs of the groups that the contact is part of. | string [ ] | Yes | |||||||||
kmsResourceObjectUrl |
kmsResourceObjectUrl for the content Object to be used.
|
string | No | |||||||||
lastName |
Last name | string | No | |||||||||
manager |
Name of contact's manager | string | No | |||||||||
ownerId |
ownerId of the user |
string | No | |||||||||
phoneNumbers |
PhoneNumbers |
[ ]
|
No | |||||||||
primaryContactMethod |
Primary contact method as set by the contact/person. | string | No | |||||||||
sipAddresses |
List of SIP addresses. |
[ ]
|
No | |||||||||
title |
Job title of the person/contact. | string | No |
You can define a contactInfo
object as either a CLOUD
or a CUSTOM
contact. Once you've created the contactInfo
object, pass it to the createContact()
method:
// For a CLOUD contact
const contactinfo = {
contactId: '<UUID>',
contactType: 'CLOUD'
};
// For a CUSTOM contact
const contactinfo = {
displayName: 'John Doe',
contactType: 'CUSTOM',
phoneNumber: [
{
type: 'work',
value: '+1987987521'
}
]
};
const contactCreatedResponse = await contacts.createContact(contactInfo);
Parameters | contactInfo<Contact> |
Returns | Promise<ContactResponse> |
Here's an example of a response after a contact is successfully created (in this case, a CUSTOM
contact):
{
"statusCode": 201,
"data": {
"contact": {
"avatarURL": "",
"displayName": "testuser1",
"phoneNumbers": [
{
"type": "work",
"value": "+1985557521"
}
],
"contactType": "CUSTOM",
"encryptionKeyUrl": "kms://cisco.com/keys/ed180173-04ac-415f-8665-a9f0155f902f",
"groups": [
"1b2af605-de8a-469f-b5ba-9becdae8b67d"
],
"schemas": "urn:cisco:codev:identity:contact:core:1.0",
"contactId": "48db494a-f23a-42b3-88e7-830ee31db7ae"
}
},
"message": "SUCCESS"
}
The deleteContact()
method lets you delete a contact. It takes a contactId
as an argument.
const contactId = 'bd8c0601-e2d6-48ff-8559-72fec60131ad';
const contactDeletedResponse = await contacts.deleteContact(contactId);
Parameters | contactId<string> |
Returns | Promise<ContactResponse> |
Here's an example of a response from a successful contact deletion:
{
statusCode: 204,
data: {},
message: SUCCESS,
};
The methods in this section let you perform operations on groups of contacts.
The createContactGroup()
creates a new contact group. A contact must belong to a group. You only need to specify the groupName
for basic usage.
Once the contact group is created using the createContactGroup()
method, the ContactGroup
object contains the following attributes:
Name | Description | Values |
---|---|---|
displayName |
Display name for the group. | string |
encryptionKeyUrl |
EncryptionKeyUrl for the content key. |
string |
groupId |
Group ID. | string |
groupType |
Group Type of contact, NORMAL, or EXTERNAL. Default: NORMAL
|
GroupType: NORMAL , EXTERNAL
|
members |
String array of contactId s that are part of the group. |
string [ ] |
ownerId |
Owner ID of the user. | string |
const contactGroupCreatedResponse = await contacts.createContactGroup(
displayName
);
Parameters |
Options
|
||||||||||||||||||
Returns | Promise<ContactResponse> |
Here's an example of a response upon the successful creation of a group:
{
"statusCode": 201,
"data": {
"group": {
"meta": {
"created": "2023-09-05T08:27:32.651Z",
"lastModified": "2023-09-05T08:27:32.651Z"
},
"groupId": "abf9ffd2-dab8-41c0-a28d-2c00426c5717",
"groupType": "NORMAL",
"ownerId": "a126d98a-6570-487b-87a5-933dd3e97539",
"displayName": "testGRP",
"encryptionKeyUrl": "kms://cisco.com/keys/ed180173-04ac-415f-8665-a9f0155f902f",
"isMigration": false
}
},
"message": "SUCCESS"
}
The deleteContactGroup()
method lets you delete an existing contact group given a groupId
.
const groupId = '5b92c76b-42e2-4fa6-b14b-90b8be6913b6';
const contactGroupDeletedResponse = await contacts.deleteContactGroup(groupId);
Parameters | groupId<string> |
Returns | Promise<ContactResponse> |
Here's an example of a response upon the successful deletion of a contact group.
{
statusCode: 204,
data: {},
message: SUCCESS,
};
Caution
- Introducing the Webex Web Calling SDK
- Core Concepts
- Quickstart guide
- Authorization
- Basic Features
- Advanced Features
- Introduction
- Quickstart Guide
- Basic Features
- Advanced Features
- Multistream
- Migrating SDK version 1 or 2 to version 3