FINESSE
Finesse desktop chạy trong một trình duyệt, có nghĩa là bạn có thể cài đặt Unified Contact Center Express (Unified CCX), và agent khởi động bằng cách nhập vào URL cho Unified CCX. Bản desktop này có nhiều chức năng hơn một agent state và call-control. Nó là một container kiểu OpenSocial gadget, được xây dựng để bao gồm ứng dụng của bên thứ ba trong một trải nghiệm single agen duy nhất. Thay vì chuyển đổi giữa các ứng dụng, các agents dễ dàng truy cập đến các ứng dụng và các công cụ từ một cửa sổ đơn duy nhất, giúp gia tăng tính hiệu quả. Hình bên dưới mô tả kiến trúc và các kiến trúc mức cao của Finesse, bao gồm các bước sau:
Bước 1: Cuộc gọi từ bên ngoài PSTN hoặc từ VoIP đến gateway.
Bước 2: Gateway chuyển giao cuộc gọi đó cho CUCM, CUCM kích hoạt ứng dụng đã đăng ký sẵn, trong trường hợp này là Unified CCX.
Bước 3: Unified CM lưu ý CCX về cuộc gọi thông qua giao tiếp JTAPI.
Bước 4: Sau khi tham khảo resource manager (định tuyến cuộc gọi đến agent dựa trên skills, độ ưu tiên và rebalancing), unified CCX gửi lưu ý cho Finesse thông qua các giao tiếp CTI.
Bước 5: Finess thực hiện các xử lý bên trong và sau đó gửi các lưu ý đến dịch vụ Notification Service.
Bước 6: Finesse desktop nhận thông báo này thông qua kết nối Bidirectionalstreams
Over Synchronous HTTP (BOSH) (Extensible Messaging and Presence Protocol [XMPP]).
Bước 7: agent thực hiện một yêu cầu để thực thi một tác vụ (chẳng hạn như trả lời một cuộc gọi). Ứng dụng thực hiện yêu cầu HTTP này đến dịch vụ Finesse Web Service.
Bước 8: Finesse xử lý yêu cầu và sau đó, nếu cần thiết, sẽ yêu cầu Unified CCE hành động thông qua kết nối CTI. Khi có thể, CCE thực hiện hoặc tiếp tục chuyển các hành động yêu cầu.
Bước 9: Unified CCE lưu ý cho Finesse thông qua CTI về việc một kết nối có thành công hay là gây ra lỗi.
Bước 10: Finesse xử lý các cảnh báo (thành công/ lỗi) và gửi các cảnh báo này đến dịch vụ Notification Service. Agent web browser nhận được cảnh báo này từ Notification Service thông qua kết nối BOSH. Finesse agent trải qua các trạng thái theo sơ đồ bảng bên dưới.
1. Finesse API
Finese API là một webAPI hiện đại, chuẩn mở. Mỗi chức năng có sẵn của Finesse đều có một REST API tương ứng để cho phép các nhà phát triển ứng dụng tích hợp các sản phẩm của họ. Khả năng mở rộng và dễ dàng sử dụng của API là chưa có tiền lệ trong CCX. Agents và supervisor dùng Finesse desktop API để giao tiếp giữa các Finesse desktop và Finesse server và các client này sử dụng Unified Contact Center Enterprise (Unified CCE) hoặc Unified Contact
Center Express (Unified CCX) để gửi và nhận thông tin.
Finesse API có thể được phân loại theo các nhóm sau: User, Dialog, Queue, Team, ClientLog, Task Routing APIs, Single Sign-On, TeamMessage.
Finesse hỗ trợ cả HTTP và HTTPS từ các client. Finesse desktop có thể thực hiện bằng cách dùng một hoặc nhiều yêu cầu tựa như REST dùng HTTP/HTTPS. Các hoạt động trên các đối tượng cụ thể được thực hiện bằng cách dùng ID của các đối tượng trong REST URL. Ví dụ, URL để xem một đối tượng đơn bằng HTTP là http://<FQDN>:<port>/finesse/api/<object>/<objectID>
Trong đó FQDN là địa chỉ đầy đủ của Finesse server.
API loại cấu hình của Finesse yêu cầu user ID và mật khẩu, được tạo ra khi trong quá trình cài đặt. Finesse API sử dụng các phương thức HTTP sau để thực hiện hàm gọi request.
GET: Truy xuất một đối tượng đơn hoặc một danh sách của các đối tượng (ví dụ một người dùng hoặc một danh sách của người dùng)
PUT: Thay thế một giá trị bên trong một đối tượng (ví dụ để thay đổi trạng thái của một người dùng từ NOT_READY sang READY)
POST: Tạo mới một thành phần trong một tập hợp (ví dụ như tạo mới một reason code hay một wrap-up reason)
DELETE: Xóa một entry từ một tập hợp (ví dụ như xóa một reason code hay một wrap-up reason).
Finesse dùng các mã trạng thái của HTTP (ví dụ như 200, 400 và 500) trong thông điệp trả lời để chỉ ra một cuộc gọi API là thành công hay không.
2. API Authentication
Tất cả các API Finesse dùng xác thực kiểu HTTP basic. Kiểu này sẽ yêu cầu các thông tin credential được gửi trong authorization header. Credentials chứa thông tin username và password, ngăn cách nhau bởi dấu hai chấm “:”, mã hóa ở dạng Base64. Ví dụ, authorization header sẽ chứa chuỗi sau: "Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk". Trong đó ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk là dạng mã hóa base64 của chuỗi devasc:strongpassword (devasc là tên người dùng, mật khẩu là strongpassword ).
Ví dụ bên dưới hiển thị ba dòng mã mà Base64 encode để đưa giá trị này vào authorization header.
""" Generate Base64 Encoding """
import base64
ENCODED =base64.b64encode('devasc:strongpassword'.encode(' UTF-8'))
print(ENCODED.decode('utf-8'))
Trong chế độ Singe Sign-On, authorization header sẽ có dạng chuỗi sau:
"Bearer <authtoken>"
3. Finesse User APIs
Bảng bên dưới liệt kê các phương pháp khác nhau và User API dùng để thực hiện các thao tác trên người dùng, chẳng hạn như listing, logging in và thay đổi các thuộc tính.
Một danh sách API của tất cả các thay đổi trạng thái người dùng với các chi tiết có ở địa chỉ https://developer.cisco.com/docs/finesse/#!userchangeagent-state/userchange-agent-state. Ví dụ API dùng cho User-Sign sẽ áp đặt bạn phải sign in. Giả sử bạn dùng các thông tin sau:
Finesse server FQDN: http://hq-uccx01.abc.inc
Agent name: Anthony Phyllis
Agent ID: user001
Agent password: cisco1234
Ví dụ bên dưới sẽ mô tả một cuộc gọi đơn giản dùng Python request. Hàm gọi API dùng phương thức PUT, cùng với XML cho phép thiết lập trạng thái sang LOGIN:
""" Finesse - User Login"""
import requests
URL = "http://hquccx.
abc.inc:8082/finesse/api/User/Agent001"
PAYLOAD = (
"<User>" +
" <state>LOGIN</state>" +
" <extension>6001</extension>" +
"</User>"
)
HEADERS = {
'authorization': "Basic
QWdlbnQwMDE6Y2lzY29wc2R0",
'content-type': "application/xml",
}
RESPONSE = requests.request("PUT", URL,
data=PAYLOAD, headers=HEADERS)
print(RESPONSE.text)
print(RESPONSE.status_code)
Một ví dụ khác là API kiểu User State Change cho phép người dùng thay đổi trạng thái của họ. Giả sử bạn có các thông tin sau với API:
Finesse server FQDN: http://hq-uccx01.abc.inc
Agent name: Anthony Phyllis
Agent ID: user001
Agent password: cisco1234
Các thay đổi API sang trạng thái READY. Ví dụ bên dưới mô tả một cuộc gọi Python. Hàm gọi API cho người dùng truy cập dùng phương thức PUT và phần thân XML chuyển đổi trạng thái sang READY.
""" Finesse - User State Change"""
import requests
URL = "http://hquccx.
abc.inc:8082/finesse/api/User/Agent001"
PAYLOAD = (
"<User>" +
" <state>READY</state>" +
"</User>"
)
HEADERS = {
'authorization': "Basic
QWdlbnQwMDE6Y2lzY29wc2R0",
'content-type': "application/xml",
}
RESPONSE = requests.request("PUT", URL,
data=PAYLOAD, headers=HEADERS)
print(RESPONSE.text)
print(RESPONSE.status_code)
4. Finesse Team APIs
Đối tượng Team tượng trưng cho một nhóm và chứa URI, tên nhóm và những người dùng thuộc về một nhóm. Bảng nên dưới mô tả API của Finesse Team để truy cập đến đối tượng Team và liệt kê tất cả các thông điệp của một team.
Một danh sách đầy đủ của Team API với các chi tiết có thể tìm ở địa chỉ https://developer.cisco.com/docs/finesse/#team-apis. Đoạn mã Python trong ví dụ bên dưới mô tả một cuộc gọi API để thu thập các chi tiết về Team ID 2.
import requests
url = "https://hquccx.
abc.inc:8445/finesse/api/Team/2"
headers = {
'authorization': "BasicQWdlbnQwMDE6Y2lzY29wc2R0",
'cache-control': "no-cache",
}
response = requests.request("GET", url,
headers=headers)
print(response.text)
8.4.5. Dialog APIs
Đối tượng Dialog tượng trưng cho một đối thoại (voice hay nonvoice) giữa hai hoặc nhiều hơn người dùng. Có nhiều phiên bản của dialog APIs. Bảng bên dưới mô tả loại API này, cho phép hai người dùng thực hiện cuộc gọi với nhau.
Một danh sách đầy đủ của các Dialog API, bao gồm các chi tiết có thể được đọc ở địa chỉ https://developer.cisco.com/docs/finesse/#dialog-apis. Đoạn chương trình Python bên dưới mô tả làm thế nào để thực hiện một cuộc gọi API giữa hai số thuê bao extension 6001 và 6002.
""" Finesse - Initiate a dialog between two
numbers """
import requests
URL = "http://hquccx.
abc.inc:8082/finesse/api/User/Agent001/Dialogs"
PAYLOAD = (
"<Dialog>" +"<requestedAction>MAKE_CALL</requestedAction>" + " <fromAddress>6001</fromAddress>" +" <toAddress>6002</toAddress>" +"</Dialog>"
)
HEADERS = {'authorization': "BasicQWdlbnQwMDE6Y2lzY29wc2R0",
'content-type': "application/xml",
'cache-control': "no-cache",
}
RESPONSE = requests.request("POST", URL,data=PAYLOAD, headers=HEADERS)
print(RESPONSE.text)
print(RESPONSE.status_code)
5. Finesse Gadgets
Ứng dụng Finesse desktop là một container gadget OpenSocial. Điều này có nghĩa là một agent hoặc bất cứ ai cũng có thể tùy chỉnh những gì có trên màn hình desktop. Gadget được xây dựng dùng HTML, CSS và JavaScripts. Một gadget là một công cụ đơn giản nhưng mạnh, cho phép một agent nhanh chóng gửi một hoặc nhiều trang web đến người gọi thông qua chat hoặc email. Tính năng này tự động bốn đến năm bước trong tác vụ này.
Một gadget được định nghĩa bằng cách dùng cú pháp khai báo XML được xử lý bởi một gadget server sao cho nó có thể được nhúng vào trong bối cảnh sau:
Thư viện Finesse JavaScript có thể đọc ở địa chỉ http(s)://<FQDN>:<port>/desktop/assets/js/doc/index.html.
Có vài gadget có sẵn ở địa chỉ
https://developer.cisco.com/docs/finesse/#!samplegadgets/sample-gadgets.
Finesse desktop chạy trong một trình duyệt, có nghĩa là bạn có thể cài đặt Unified Contact Center Express (Unified CCX), và agent khởi động bằng cách nhập vào URL cho Unified CCX. Bản desktop này có nhiều chức năng hơn một agent state và call-control. Nó là một container kiểu OpenSocial gadget, được xây dựng để bao gồm ứng dụng của bên thứ ba trong một trải nghiệm single agen duy nhất. Thay vì chuyển đổi giữa các ứng dụng, các agents dễ dàng truy cập đến các ứng dụng và các công cụ từ một cửa sổ đơn duy nhất, giúp gia tăng tính hiệu quả. Hình bên dưới mô tả kiến trúc và các kiến trúc mức cao của Finesse, bao gồm các bước sau:
Bước 1: Cuộc gọi từ bên ngoài PSTN hoặc từ VoIP đến gateway.
Bước 2: Gateway chuyển giao cuộc gọi đó cho CUCM, CUCM kích hoạt ứng dụng đã đăng ký sẵn, trong trường hợp này là Unified CCX.
Bước 3: Unified CM lưu ý CCX về cuộc gọi thông qua giao tiếp JTAPI.
Bước 4: Sau khi tham khảo resource manager (định tuyến cuộc gọi đến agent dựa trên skills, độ ưu tiên và rebalancing), unified CCX gửi lưu ý cho Finesse thông qua các giao tiếp CTI.
Bước 5: Finess thực hiện các xử lý bên trong và sau đó gửi các lưu ý đến dịch vụ Notification Service.
Bước 6: Finesse desktop nhận thông báo này thông qua kết nối Bidirectionalstreams
Over Synchronous HTTP (BOSH) (Extensible Messaging and Presence Protocol [XMPP]).
Bước 7: agent thực hiện một yêu cầu để thực thi một tác vụ (chẳng hạn như trả lời một cuộc gọi). Ứng dụng thực hiện yêu cầu HTTP này đến dịch vụ Finesse Web Service.
Bước 8: Finesse xử lý yêu cầu và sau đó, nếu cần thiết, sẽ yêu cầu Unified CCE hành động thông qua kết nối CTI. Khi có thể, CCE thực hiện hoặc tiếp tục chuyển các hành động yêu cầu.
Bước 9: Unified CCE lưu ý cho Finesse thông qua CTI về việc một kết nối có thành công hay là gây ra lỗi.
Bước 10: Finesse xử lý các cảnh báo (thành công/ lỗi) và gửi các cảnh báo này đến dịch vụ Notification Service. Agent web browser nhận được cảnh báo này từ Notification Service thông qua kết nối BOSH. Finesse agent trải qua các trạng thái theo sơ đồ bảng bên dưới.
| Trạng thái | Mô tả |
| LOGIN | Agent đang truy cập vào hệ thống. Đây là một trạng thái trung gian. |
| LOGOUT | Agent đang logout ra khỏi hệ thống. |
| READY | Agent đang sẵn sàng nhận cuộc gọi. |
| NOT_READY | Agent đang login vào hệ thống nhưng chưa sẵn sàng nhận cuộc gọi. Đó có thể là giờ giải lao, hết ca hoặc agent đang trong cuộc gọi khác. |
| RESERVED | Đây là trạng thái trung gian vì agent được chọn lựa để nhận cuộc gọi nhưng agent chưa trả lời cuộc gọi. |
| TALKING | Agent đang trong một cuộc gọi |
| HOLD | Agent đặt cuộc gọi vào chế độ chờ |
Finese API là một webAPI hiện đại, chuẩn mở. Mỗi chức năng có sẵn của Finesse đều có một REST API tương ứng để cho phép các nhà phát triển ứng dụng tích hợp các sản phẩm của họ. Khả năng mở rộng và dễ dàng sử dụng của API là chưa có tiền lệ trong CCX. Agents và supervisor dùng Finesse desktop API để giao tiếp giữa các Finesse desktop và Finesse server và các client này sử dụng Unified Contact Center Enterprise (Unified CCE) hoặc Unified Contact
Center Express (Unified CCX) để gửi và nhận thông tin.
Finesse API có thể được phân loại theo các nhóm sau: User, Dialog, Queue, Team, ClientLog, Task Routing APIs, Single Sign-On, TeamMessage.
Finesse hỗ trợ cả HTTP và HTTPS từ các client. Finesse desktop có thể thực hiện bằng cách dùng một hoặc nhiều yêu cầu tựa như REST dùng HTTP/HTTPS. Các hoạt động trên các đối tượng cụ thể được thực hiện bằng cách dùng ID của các đối tượng trong REST URL. Ví dụ, URL để xem một đối tượng đơn bằng HTTP là http://<FQDN>:<port>/finesse/api/<object>/<objectID>
Trong đó FQDN là địa chỉ đầy đủ của Finesse server.
API loại cấu hình của Finesse yêu cầu user ID và mật khẩu, được tạo ra khi trong quá trình cài đặt. Finesse API sử dụng các phương thức HTTP sau để thực hiện hàm gọi request.
GET: Truy xuất một đối tượng đơn hoặc một danh sách của các đối tượng (ví dụ một người dùng hoặc một danh sách của người dùng)
PUT: Thay thế một giá trị bên trong một đối tượng (ví dụ để thay đổi trạng thái của một người dùng từ NOT_READY sang READY)
POST: Tạo mới một thành phần trong một tập hợp (ví dụ như tạo mới một reason code hay một wrap-up reason)
DELETE: Xóa một entry từ một tập hợp (ví dụ như xóa một reason code hay một wrap-up reason).
Finesse dùng các mã trạng thái của HTTP (ví dụ như 200, 400 và 500) trong thông điệp trả lời để chỉ ra một cuộc gọi API là thành công hay không.
2. API Authentication
Tất cả các API Finesse dùng xác thực kiểu HTTP basic. Kiểu này sẽ yêu cầu các thông tin credential được gửi trong authorization header. Credentials chứa thông tin username và password, ngăn cách nhau bởi dấu hai chấm “:”, mã hóa ở dạng Base64. Ví dụ, authorization header sẽ chứa chuỗi sau: "Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk". Trong đó ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk là dạng mã hóa base64 của chuỗi devasc:strongpassword (devasc là tên người dùng, mật khẩu là strongpassword ).
Ví dụ bên dưới hiển thị ba dòng mã mà Base64 encode để đưa giá trị này vào authorization header.
""" Generate Base64 Encoding """
import base64
ENCODED =base64.b64encode('devasc:strongpassword'.encode(' UTF-8'))
print(ENCODED.decode('utf-8'))
Trong chế độ Singe Sign-On, authorization header sẽ có dạng chuỗi sau:
"Bearer <authtoken>"
3. Finesse User APIs
Bảng bên dưới liệt kê các phương pháp khác nhau và User API dùng để thực hiện các thao tác trên người dùng, chẳng hạn như listing, logging in và thay đổi các thuộc tính.
| Phương thức | API | Mô tả |
| GET | http://<FQDN>/finesse/api/User/<id> | Lấy một phiên bản của đối tượng người dùng. |
| GET | http://<FQDN>/finesse/api/User | Lấy một danh sách của tất cả các người dùng. |
| PUT | http://<FQDN>/finesse/api/User/<id> with XML body: <User> <state>LOGIN</state > <extension>5250001</ extension> </User> |
Login vào CTI server. |
| PUT | http://<FQDN>/finesse/api/User/<id> with XML body: <User> <state>READY</state> </User> |
Gán trạng thái của user: READY NOT_READY LOGOUT |
| GET | http://<FQDN>/finesse/api/User/<id>/PhoneB ooks |
Lấy một danh bạ điện thoại và 1500 thông tin liên hệ đầu tiên của người dùng đó. |
Finesse server FQDN: http://hq-uccx01.abc.inc
Agent name: Anthony Phyllis
Agent ID: user001
Agent password: cisco1234
Ví dụ bên dưới sẽ mô tả một cuộc gọi đơn giản dùng Python request. Hàm gọi API dùng phương thức PUT, cùng với XML cho phép thiết lập trạng thái sang LOGIN:
""" Finesse - User Login"""
import requests
URL = "http://hquccx.
abc.inc:8082/finesse/api/User/Agent001"
PAYLOAD = (
"<User>" +
" <state>LOGIN</state>" +
" <extension>6001</extension>" +
"</User>"
)
HEADERS = {
'authorization': "Basic
QWdlbnQwMDE6Y2lzY29wc2R0",
'content-type': "application/xml",
}
RESPONSE = requests.request("PUT", URL,
data=PAYLOAD, headers=HEADERS)
print(RESPONSE.text)
print(RESPONSE.status_code)
Một ví dụ khác là API kiểu User State Change cho phép người dùng thay đổi trạng thái của họ. Giả sử bạn có các thông tin sau với API:
Finesse server FQDN: http://hq-uccx01.abc.inc
Agent name: Anthony Phyllis
Agent ID: user001
Agent password: cisco1234
Các thay đổi API sang trạng thái READY. Ví dụ bên dưới mô tả một cuộc gọi Python. Hàm gọi API cho người dùng truy cập dùng phương thức PUT và phần thân XML chuyển đổi trạng thái sang READY.
""" Finesse - User State Change"""
import requests
URL = "http://hquccx.
abc.inc:8082/finesse/api/User/Agent001"
PAYLOAD = (
"<User>" +
" <state>READY</state>" +
"</User>"
)
HEADERS = {
'authorization': "Basic
QWdlbnQwMDE6Y2lzY29wc2R0",
'content-type': "application/xml",
}
RESPONSE = requests.request("PUT", URL,
data=PAYLOAD, headers=HEADERS)
print(RESPONSE.text)
print(RESPONSE.status_code)
4. Finesse Team APIs
Đối tượng Team tượng trưng cho một nhóm và chứa URI, tên nhóm và những người dùng thuộc về một nhóm. Bảng nên dưới mô tả API của Finesse Team để truy cập đến đối tượng Team và liệt kê tất cả các thông điệp của một team.
| Phương thức | API | Mô tả |
| GET | http://<FQDN>/finesse/api/Team/<id>? includeLoggedOutAgents=true |
Cho phép người dùng nhận một đối tượng của Team. |
| GET | http://<FQDN>/finesse/api/Tea m/<teamid>/TeamMessages |
Lấy một danh sách của các thông điệp của team cụ thể. |
import requests
url = "https://hquccx.
abc.inc:8445/finesse/api/Team/2"
headers = {
'authorization': "BasicQWdlbnQwMDE6Y2lzY29wc2R0",
'cache-control': "no-cache",
}
response = requests.request("GET", url,
headers=headers)
print(response.text)
8.4.5. Dialog APIs
Đối tượng Dialog tượng trưng cho một đối thoại (voice hay nonvoice) giữa hai hoặc nhiều hơn người dùng. Có nhiều phiên bản của dialog APIs. Bảng bên dưới mô tả loại API này, cho phép hai người dùng thực hiện cuộc gọi với nhau.
| Phương thức | API | Mô tả |
| POST | http://<FQDN>/finesse/api/User/ <id>/Dialogs with XML Body: <Dialog> <requestedAction>MAKE_CALL </requestedAction> <fromAddress>6001</fromAddre ss> <toAddress>6002</toAddress> </Dialog> |
Cho phép một người dùng thực hiện một cuộc gọi. |
| PUT | http://<FQDN>/finesse/api/Dialog /<dialogId> with XML body: <Dialog> <requestedAction>START_RECO RDING</requestedAction> <targetMediaAddress>6001</tar getMediaAddress> </Dialog> |
Cho phép một người dùng bắt đầu ghi âm một cuộc gọi. |
""" Finesse - Initiate a dialog between two
numbers """
import requests
URL = "http://hquccx.
abc.inc:8082/finesse/api/User/Agent001/Dialogs"
PAYLOAD = (
"<Dialog>" +"<requestedAction>MAKE_CALL</requestedAction>" + " <fromAddress>6001</fromAddress>" +" <toAddress>6002</toAddress>" +"</Dialog>"
)
HEADERS = {'authorization': "BasicQWdlbnQwMDE6Y2lzY29wc2R0",
'content-type': "application/xml",
'cache-control': "no-cache",
}
RESPONSE = requests.request("POST", URL,data=PAYLOAD, headers=HEADERS)
print(RESPONSE.text)
print(RESPONSE.status_code)
5. Finesse Gadgets
Ứng dụng Finesse desktop là một container gadget OpenSocial. Điều này có nghĩa là một agent hoặc bất cứ ai cũng có thể tùy chỉnh những gì có trên màn hình desktop. Gadget được xây dựng dùng HTML, CSS và JavaScripts. Một gadget là một công cụ đơn giản nhưng mạnh, cho phép một agent nhanh chóng gửi một hoặc nhiều trang web đến người gọi thông qua chat hoặc email. Tính năng này tự động bốn đến năm bước trong tác vụ này.
Một gadget được định nghĩa bằng cách dùng cú pháp khai báo XML được xử lý bởi một gadget server sao cho nó có thể được nhúng vào trong bối cảnh sau:
- Những trang web chạy đơn lẻ.
- Các ứng dụng web
- Các gadget khác.
Thư viện Finesse JavaScript có thể đọc ở địa chỉ http(s)://<FQDN>:<port>/desktop/assets/js/doc/index.html.
Có vài gadget có sẵn ở địa chỉ
https://developer.cisco.com/docs/finesse/#!samplegadgets/sample-gadgets.