Json Integration Data
I. INFO
Là 1 object chứa các object nhỏ để định hình click to call button và các event xử lý api1. renderTooltip
Là 1 array chứa các object dùng để định vị vị trí chèn nút clicktocallMỗi object gồm:
- path: xác định path url chèn nút call, nếu url hiện tại có chứa giá trị biến này sẽ tiến hành chèn theo điều kiện của element.
- element: xác định phần tử chèn nút call
{
   "renderTooltip":[
      {
         "path":"/requested_tickets",
         "element":"[class='value'] >[class='ember-view'] > [class='ember-view item'] > div"
      }
    ]
}
2. listOptions
Là 1 array chứa các object dùng để thêm các checkbox ở phần setting của callboxMỗi object gồm:
- name: Tên biến của checkbox.
- label: Label được hiển thị ở phần setting.
{
   "listOptions":[
      {
         "name":"auto_create_ticket_hubspot",
         "label":"Auto creating a ticket for each call"
      },
      {
         "name":"auto_copy_hubspot_gcalls",
         "label":"Sync contacts to Gcalls"
      }
   ]
}
3. userInfo
Là 1 array chứa các object dùng để xác định vị trí lấy các thông tin từ ui crmMỗi object gồm:
- field: Tên biến được sử dụng để lưu dữ liệu.
- path: xác định path url có dữ liệu cần lấy, nếu url hiện tại có chứa giá trị biến này sẽ tiến hành chèn theo điều kiện của element.
- element: xác định phần tử chứa dữ liệu.
{
   "userInfo":[
      {
         "field":"hubspotEmail",
         "path":"/",
         "element":".user-info-email"
      },
      {
         "field":"hubspotUserName",
         "path":"/",
         "element":".user-info-name"
      }
   ]
}
4. dataFunction
Là 1 array chứa các object dùng để xử lý sự kiện get api khi bắt đầu cuộc gọi, mỗi object là 1 api, gọi theo thứ tự từ trên xuốngMỗi object gồm:
- objectName: tên object lưu dữ liệu lấy được từ api, object có thể được gọi ra ở các sự kiện khác như lưu log hoặc render iframe
- templateName: Templatename của tích hợp hiện tại
- endpointName: Endpoint api cần gọi.
- arrayResponse: xác định tên array cần lấy trong response api trả về, để trống nếu chỉ muốn lấy 1 object.
- responseData: Là 1 array chứa các object xác định giá trị lấy từ response trả về, mỗi object có value là giá trị trả về từ api ( nếu có arrayResponse, giá trị sẽ là $arrayResponse.$value ).
- data: body data api.
- replaceData: là 1 array chứa các object dùng để replace giá trị của data trước khi tiến hành call api.
{
  {
          "objectName":"organization",
          "templateName":"zendesk",
          "endpointName":"get_organization_zendesk",
          "arrayResponse":"",
          "responseData":[
             {
    "organization_name":"organizations[0]?.name"
             },
             {
                "id":"organizations[0]?.id"
             }
          ],
          "data":{
             "id":":id"
          },
          "replaceData":[
             {
                ":id":"iframeDatas?.contact[0][0]?.id"
             }
          ]
       }
}
5. preLogFunction
Là 1 array chứa các object để xử lý sự kiện create khi cuộc gọi được kết nối.Mỗi object gồm:
- templateName: Templatename của tích hợp hiện tại
- endpointName: Endpoint api cần gọi.
- data: body data api.
- replaceData: là 1 array chứa các object dùng để replace giá trị của data trước khi tiến hành call api.
- responseData: Là 1 array chứa các object xác định giá trị lấy từ response trả về, mỗi object có value là giá trị trả về từ api
- quickOpenUrl: thông tin tự động mở create thành công:
- Url: url được mở
- replaceData: là 1 array chứa các object dùng để replace giá trị của url.
{
  "preLogFunction":[
      {
         "templateName":"zendesk",
         "endpointName":"create_ticket_zendesk",
         "data":{
            "ticket":{
               "subject":"subjectData",
               "comment":{
                  "body":"contentData"
               },
               "requester_id":"requesterIdData",
               "brand_id":7574464357145,
               "tags":[
                  "gcalls",
                  ":direction",
                  "answered"
               ]
            }
         },
         "replaceData":[
            {
               "subjectData":"subjectTitle"
            },
            {
               "contentData":"TextContent"
            },
            {
               "requesterIdData":"iframeData?.contact[0][0]?.id"
            },
            {
               ":direction":"directionCustom"
            }
         ],
         "responseData":[
            {
               "ticket.id":"result?.data?.ticket?.id"
            }
         ],
         "quickOpenUrl":{
            "Url":"https://:hostName/agent/tickets/:ticketId",
            "replaceData":[
               {
                  ":ticketId":"result?.data?.ticket?.id"
               },
               {
                  ":hostName":"parrentHostname"
               }
            ]
         }
      }
   ]
}
6. logFunction
Là 1 array chứa các object để xử lý sự kiện create khi cuộc gọi kết thúc.Mỗi object gồm:
- templateName: Templatename của tích hợp hiện tại
- endpointName: Endpoint api cần gọi.
- data: body data api.
- replaceData: là 1 array chứa các object dùng để replace giá trị của data trước khi tiến hành call api.
- responseData: Là 1 array chứa các object xác định giá trị lấy từ response trả về, mỗi object có value là giá trị trả về từ api
{
                "logFunction":[
      {
         "templateName":"zendesk",
         "endpointName":"update_ticket_zendesk",
         "data":{
            "ticket":{
               "comment":{
                  "body":"contentData",
                  "public":true
               },
               "custom_fields":[
                  {
                     "id":8441228836249,
                     "value":"calllogStartTime"
                  },
                  {
                     "id":8441234894873,
                     "value":"calllogEndTime"
                  },
                  {
                     "id":8441236503833,
                     "value":"calllogDuration"
                  }
               ]
            },
            "id":"idTicket"
         },
         "replaceData":[
            {
               "contentData":"TextContent"
            },
            {
               "idTicket":"iframeData?.ticket?.id"
            },
            {
               "calllogStartTime":"handleTimeCreate2(calllog_info?.start, false)"
            },
            {
               "calllogEndTime":"handleTimeCreate2(calllog_info?.end, false)"
            },
            {
               "calllogDuration":"callDuration"
            }
         ]
      }
   ]
}
7. handleCreate
Là 1 array chứa các object xử lý render create contact boxMỗi object gồm:
- templateName: Templatename của tích hợp hiện tại
- endpointName: Endpoint api cần gọi.
- data: body data api.
- replaceData: là 1 array chứa các object dùng để replace giá trị của data trước khi tiến hành call api.
- inputElm: là 1 array chứa các object xử lý render các input, mỗi object gồm:- id: id input, dùng để định danh và lưu trữ giá trị input, được gọi ở replaceData với định dạng: objectValue.$idValue
- type: loại input ( input, textarea )
- placeholder: input placeholder
 
- quickOpenUrl: thông tin tự động mở create thành công:- Url: url được mở
- replaceData: là 1 array chứa các object dùng để replace giá trị của url.
 
{
    "handleCreate":[
      {
         "templateName":"zendesk",
         "endpointName":"create_contact_zendesk",
         "data":{
            "user":{
               "name":":name",
               "phone":":phone",
               "role":"end-user"
            }
         },
         "replaceData":[
            {
               ":name":"objectValue?.userName"
            },
            {
               ":phone":"iframeData?.phone"
            }
         ],
         "inputElm":[
            {
               "id":"userName",
               "type":"input",
               "placeholder":"Name"
            }
         ]
      }
   ]
}
8. handleTicket
Là 1 array chứa các object xử lý render create ticket boxMỗi object gồm:
- templateName: Templatename của tích hợp hiện tại
- endpointName: Endpoint api cần gọi.
- data: body data api.
- replaceData: là 1 array chứa các object dùng để replace giá trị của data trước khi tiến hành call api.
- label: label input
- inputElm: là 1 array chứa các object xử lý render các input, mỗi object gồm:- id: id input, dùng để định danh và lưu trữ giá trị input, được gọi ở replaceData với định dạng: objectValue.$idValue
- type: loại input ( input, textarea )
- placeholder: input placeholder
 
- quickOpenUrl: thông tin tự động mở create thành công:- Url: url được mở
- replaceData: là 1 array chứa các object dùng để replace giá trị của url.
 
{
    "handleTicket":[
      {
         "label":"Ticket",
         "templateName":"zendesk",
         "endpointName":"create_ticket_zendesk",
         "data":{
            "ticket":{
               "subject":"subjectData",
               "comment":{
                  "body":"contentData"
               },
               "requester_id":"requesterIdData",
               "brand_id":7574464357145,
               "tags":[
                  "gcalls"
               ]
            }
         },
         "replaceData":[
            {
               "subjectData":"objectValue?.subjectTicket"
            },
            {
               "contentData":"objectValue?.contentTicket"
            },
            {
               "requesterIdData":"iframeData?.contact[0][0]?.id"
            }
         ],
         "inputElm":[
            {
               "id":"subjectTicket",
               "type":"input",
               "placeholder":"Subject"
            },
            {
               "id":"contentTicket",
               "type":"textarea",
               "placeholder":"Content"
            }
         ],
         "quickOpenUrl":{
            "Url":"https://:hostName/agent/tickets/:ticketId",
            "replaceData":[
               {
                  ":ticketId":"res?.data?.ticket?.id"
               },
               {
                  ":hostName":"parrentHostname"
               }
            ]
         }
      }
   ]
}
9. Lock Diapad
Sử dụng khi muốn lock bàn phím gọi của tích hợp
{
  "isLockDiapad":false,
}
10. Chọn language
- Sử dụng khi muốn thay đổi ngôn ngữ của tích hợp, nếu chưa dịch hay ngôn ngữ chưa có thì có thể dev trong Omnibox
{
   "lang":"vi"
} 
11. Chọn Region Code
- Sử dụng khi cần chọn đầu số theo vùng miền khi gọi, có thể liên hệ tel4 để thiết kế theo kiểu random hay chọn trước đầu số
- Nếu chọn trước đầu số thì thêm số hotline vào value, số hotline này sẽ được gửi qua field hotlineCallout ở chromeExt qua SIP header cho Tel4
{
   "regionCode":
   [{"label":"Default","name":"Default","value":"default"},{"label":"North","name":"North","value":"vi_north"},{"label":"South","name":"South","value":"vi_south"}]}
}
II. IFRAME
Là 1 array chứa các object xử lý việc định dạng iframeMỗi object gồm:
- col: số lượng data hiển thị trên 1 hàng.
- label: box label
- objectName: objectName được lấy từ thông tin lưu ở Info
- arrayData: Trường hợp info có arrayData, hiển thị tối đa 3 object, để trống hiển thị object đầu tiên.
- Fields: là 1 array chứa các object xử lý việc render thông tin.
- quickOpenUrl: thông tin tự động mở create thành công:- Url: url được mở
- replaceData: là 1 array chứa các object dùng để replace giá trị của url.
 
[
    {
       "col":"3",
       "label":"Contact",
       "objectName":"contact",
       "arrayData":"",
       "fields":[
          {
             "Name":"name"
          },
          {
             "Phone":"phone"
          }
       ],
       "quickOpenUrl":{
          "Url":"https://:hostName.zendesk.com/agent/users/:userId/",
          "replaceData":[
             {
                ":userId":"data?.contact[0][0]?.id"
             },
             {
               ":hostName": "parrentHostname"
             }
          ]
       }
    }
]