核心应用程序API
以下核心事件、属性和操作可在所有支持Zendesk Apps框架的产品的所有位置使用:亚博
使用ZAF客户在应用程序中监听事件、访问属性或调用操作。
该API由支持应用程序API,聊天应用程序API,以及销售应用程序API.
事件
- app.registered
- app.activated
- app.deactivated
- app.expanded
- app.collapsed
- instance.created
- instance.registered
- window.resize
- window.scroll
请注意:窗口
事件是防反跳因为性能原因。在下面的每个窗口事件的描述中都指出了反弹等待值。
app.registered
当应用程序加载时触发。它也会在应用程序重新加载时触发,比如当代理单击Reload All Apps按钮时。
app.activated
当应用程序激活时触发。根据地点的不同,这意味着不同的事情。例如,如果应用程序在ticket侧栏中,当用户切换到包含该应用程序实例的选项卡时,应用程序将成为活动的。
请注意:该事件与app.registered
事件,它在应用程序激活时触发,而不是在应用程序加载时。使用app.registered
监听加载事件。
app.deactivated
当应用程序变为非活动时触发。根据地点的不同,这意味着不同的事情。例如,如果应用程序在ticket侧栏中,当用户从包含该应用程序实例的选项卡切换时,应用程序将变为非活动状态。
app.expanded
当应用程序从崩溃状态展开时触发。此功能仅在侧栏位置可用,其中包括票侧边栏,新票务边栏,用户侧栏,组织侧边栏而且聊天栏.
app.collapsed
当应用程序从扩展状态崩溃时触发。此功能仅在侧栏位置可用,其中包括票侧边栏,新票务边栏,用户侧栏,组织侧边栏而且聊天栏.
instance.created
当你的应用程序的另一个实例被创建时触发。这在你想要从一个永久位置(比如Zendesk Support的后台位置)与临时位置(比如Zendesk Support的票务边栏)交互的情况下非常有用。亚博事件处理程序绑定到instance.created
接收上下文
刚刚创建的实例的数据。您可以使用instanceGuid
的属性上下文
要创建ZAFClient
使用实例
API。有关实例API的更多信息,请参见位置之间的消息传递.
例子:
//背景位置
客户端.在(“instance.created”,函数(上下文){
如果(上下文.位置= = =“ticket_sidebar”){
varticketInstance=客户端.实例(上下文.instanceGuid);
ticketInstance.调用(“comment.appendText”,“最好的祝福!”);
}
});
请注意:触发此事件时,该位置的SDK客户端可能尚未注册。如果您的应用程序只需要在SDK客户端注册后才需要做一些事情,请参阅instance.registered.
instance.registered
加载应用程序实例并注册SDK客户端时触发。它也会在应用程序重新加载时触发,比如当代理单击Reload All Apps按钮时。
window.resize
当当前浏览器窗口大小被调整时触发。该事件最多每33(1000/30)毫秒触发一次。
当被此事件调用时,处理器函数接收一个事件对象作为它的第一个参数和以下附加参数:
宽度
,相当于window.innerWidth
高度
,相当于window.innerHeight
window.scroll
当当前浏览器窗口滚动到新位置时触发。该事件最多每16(1000/60)毫秒触发一次。
当被此事件调用时,处理器函数接收一个事件对象作为它的第一个参数和以下附加参数:
scrollTop
,相当于window.scrollTop
属性
实例
表示应用程序的运行实例。每个iframe有一个实例。例如,如果在代理界面中打开了两个票据选项卡,并且应用程序在top_bar
而且ticket_sidebar
位置,应用程序将有三个实例。
您可以使用此API来建立跨位置通信和API调用。看到client.instance获取更多使用细节。
得到
客户端.得到(“实例”)
返回
{
实例:{
“9 e012b1f - 1397 - 484 - e - 8810 - c444b8085e55”:{
instanceGuid:“9 e012b1f - 1397 - 484 - e - 8810 - c444b8085e55”
宿主:“亚博zendesk”,
产品:“支持”,
位置:“ticket_sidebar”,
账户:{
子域名:“子域名”
},
状态:“注册”
...
}
}
}
每个实例的键值都是instanceGuid
.实例对象的内容等同于iframe的内容上下文.实例还包括状态
属性后设置为“已创建”实例创建完成和“注册”后,iframe加载和SDK客户端注册.
要求
返回一个包含requirement_id
和一个requirement_type
.有关更多信息,请参见指定应用程序需求.
得到
客户端.得到(要求:标识符的)
返回
{
“要求:标识符”:{
“requirement_id”:字符串/整数,
“requirement_type”:资源类型
}
}
requirement_id
可以返回一个字符串或整数,这取决于底层对象的ID。例如,ticket字段将返回一个整数,而webhooks将返回一个字符串。
注意:中列出了可用的资源类型指定应用程序需求.
assetURL
返回一个完全限定的URL,指向应用程序中的文件资产
目录中。
得到
客户端.得到(“assetURL:商标\ \ . png”)
返回
{
“assetURL:商标\ . png”:“https://.../logo.png”
}
注意:文件名中的点和逗号必须使用反斜杠进行转义。要在字符串文字中添加一个反斜杠,您需要使用“\ \”
,因为第一个反斜杠转义第二个反斜杠。这可以通过console.log(“\ \”);
.
isCollapsed
返回应用程序的当前折叠状态。此属性仅对边栏位置可用,其中包括票侧边栏,新票务边栏,用户侧栏,组织侧边栏而且聊天栏.
得到
客户端.得到(“isCollapsed”)
返回
{
“isCollapsed”:真正的/假
}
viewport.size
返回浏览器窗口视口的大小。
得到
客户端.得到(“viewport.size”)
返回
{
“错误”:{},
“viewport.size”:{
“宽度”:1024,
“高度”:768
}
}
行动
调整
调整应用程序的iframe尺寸。
调用
客户端.调用(“调整”,{宽度:“300 px”,高度:“750 px”})
参数
- 对象,其中包含所需的维度(
宽度
而且高度
px % vw/vh情态动词)
返回
对象,其中包含合成维度
限制
的调整
API在某些地方有以下限制:
- 票证、用户和组织边栏应用程序的宽度不能超过320px
- 导航栏应用程序不能调整大小;它们总是占用最大的可用空间
- 顶部栏应用程序不支持百分比值;使用像素值
- 模态可以占视口的80% (80vh和80vw)
注意:确保始终调用调整
每当app.activated如果你的应用在动态计算它的高度,核心事件就会被触发。这被认为是防止调整大小问题的最佳实践scrollHeight
的iframe
将返回值为0
当代理切换到另一个票据选项卡时,而原始选项卡中的应用程序仍在加载过程中。
当应用的宽度发生变化时,你可以使用resize事件监听器自动调整应用的高度票侧边栏或新票务边栏.例如:
窗口.addEventListener(“调整”,防反跳(()=>{
控制台.日志(“innerWidth”,窗口.innerWidth);
resizeApp();
},200));
instances.create
在指定位置创建应用程序的新iframe实例,例如模态
在Ze亚博ndesk Support。看到模态.未来可能会提供更多的地点。
调用
客户端.调用(“instances.create”,选项)
参数
选项
:包含以下属性的对象:位置
特定于产品的值。在Ze亚博ndesk Support中,需要设置为模态
.url
新iframe的URL。URL可以是绝对URL,也可以以资产/
如果它是相对于上传的应用程序的资产目录。大小
(可选)包含所需尺寸(宽度
而且高度
px % vw/vh情态动词)
返回
承诺解析为包含新实例元数据的对象。
{
“instances.create”:[
instanceGuid:“9 e012b1f - 1397 - 484 - e - 8810 - c444b8085e55”,
...
]
}
一旦框架创建了实例,返回的promise就会解析。对于模态,只有当模态在屏幕上可见时才创建实例。如果另一个模式已经打开,它将被延迟,因为一次只能显示一个模式。
返回的数组总是有一个元素。在将来的位置,这个API可能会创建多个实例。在这种情况下,数组会更长。