版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ICS33.050CCSM30团 体 标 准T/TAF283—2025智能终端意图框架接口技术要求Technicalrequirementsforinterfaceofintelligentterminalintentframework2025-06-11发布 2025-06-11实施电信终端产业协会发布T/TAF283—2025T/TAF283—2025T/TAF283—2025T/TAF283—2025版权声明本文件的版权属于电信终端产业协会,任何单位和个人未经许可,传播、发行、合订和宣贯等,也不得未经允许采用其具体内容编制本团体以外各类标准和技术文件。如有以上需要请与本团体联系。邮箱:tafrb@电话AGE\*ROMANPAGE\*ROMANIIIPAGE\*ROMANPAGE\*ROMANII目 次前言 III引言 IV1范引文件 1语定义 1略语 1图口卓侧方案 1安接通总览 1通流程 2信程述 2步用口 2步口用 2意注册 3图名则 3AndroidManifest.xml3图册件 3意共享 5图享述 5图享据构 5统侧Provider声明 6用声明 7图享权程 7享个图 8除图 10意调用 11图用口 11图数(IntentParams)数结构 12台式 12台式 13其接口 145.6.114询统性态 14getSid() 15询统否标准图 16错码 16T/TAF283—2025T/TAF283—2025T/TAF283—2025T/TAF283—2025静资配置 17图口端术176.1概述 17意注与务建 17接鉴权 18口权18图享权 18图用权 21意共享 22享个图 22图除口 26意调接口 28附录A(料)数和代示例 30意共数示例 30同接口call方代码例 31异接口call方代码例 32deleteIntent方示例 33deleteEntity方示例 34同意调代例 34异意调代例 36查系特状码示例 38getSid()法例 39access_token体示例 39签代逻示例 39账绑程1应体 41前 言GB/T1.1—20201请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。本文件由电信终端产业协会(TAF)提出并归口。OPPO)本文件主要起草人:解谦、樊列龙、戈志勇、曾晨曦、黄宇畅、曹宇琼、唐溯、高立发、潘斌斌、曾祥霆、曾勇波、郑钊、鲁岩、麦睿楷、史浩、林冠辰、林国涛、李琦、文军、张伟强、李丛蓉。引 言本文件“智能终端意图框架”系列标准之一,该系列标准的结构及名称预计如下:T/TAF283—2025T/TAF283—2025T/TAF283—2025T/TAF283—2025PAGEPAGE11PAGEPAGE10智能终端意图框架接口技术要求范围本文件适用于搭载安卓操作系统的智能终端意图框架开发、适配和测试。(T/TAF282—2025智能终端意图框架总体技术要求T/TAF282—2025界定的术语和定义适用于本文件。下列缩略语适用于本文件。UTF-8:8位元Unicode转换格式(UnicodeTransformationFormat,8-bit)ContentProvider1意图注册意图注册/共享/调用ContentProvider通信协议(调用接口/数据格式/安全)接口鉴权(本地/网络)意图框架通信协议(/数据格式/安全)应用业务逻辑(注册/共享/调用)应用侧 终端侧图1安卓接口通信总览应用和终端系统之间通信支持同步和异步两种调用模式,同步的方式直接使用ContentProvider完成通信,异步的方式使用ResultReceiver传递响应结果。安卓同步接口调用流程见图2。IntelligentIntentProviderProviderClientIntelligentIntentProviderProviderClientProviderClientDomainProviderExecuteResultShareResult应用侧 终端侧图2安卓同步接口调用流程其中:——意图共享ContentProvidercall——意图调用ContentProvider,contenturiContentProvider的call(call(异步数据返回配合ResultReceiver使用,ProviderClient调用后仅返回CallResult结果,完整ProviderResultReceiver.send(ClientonReceiveResult。1.call(method+IntentContext+ResultReceiver1.call(method+IntentContext+ResultReceiver)2.receiver.send(ExcuteResult)1.call(method+Schema+ResultReceiver)2.receiver.send(ShareResult)IntelligentIntentProviderIntentExecuteReceiver(onReceiveResult)ProviderClientIntentShareReceiver(onReceiveResult)ProviderClientDomainProvider应用侧 终端侧图3安卓异步接口调用流程意图命名规则见T/TAF282—2025中5.2要求。AndroidManifest.xml<application><application>Appassets<meta-dataandroid:value="assets/intelligent_intent_config.json"/></application>intelligent_intent_config.json:{{//应用支持的意图列表"intelligentIntents":[//意图共享注册示例{//意图名称//名称应当遵循意图框架规范,当前仅支持预置垂域意图,不允许自定义//应用内意图名称唯一,不允许出现相同的名称定义"intentName":"Navigation.ShareNavigationInfo",////"description":["应用共享导航信息给意图框架"]},//意图调用注册示例{//意图名称//名称应当遵循意图框架规范,当前仅支持预置垂域意图,不允许自定义//应用内意图名称唯一,不允许出现相同的名称定义"intentName":"Navigation.StartNavigationFg",//意图版本号"intentVersion":"1.0.0",//意图调用类型,foreground/background"executeMode":"foreground",//意图调用的响应入口:foreground则配置deeplink链接(如应用落地页)//background则配置响应服务如:content://com.xxx.xxx/entry,调用传递的参数每个垂域不同"executeEntry":"navi://minimap/xxx",//executeModebackground//用于系统在入口进行推荐"description":["意图框架调用应用发起导航"]},{...}]}意图共享注册结构如表1所示。表1意图共享注册结构参数名类型默认值必填描述intentNameString-是意图名称,名称应当遵循意图框架规范,当前仅⽀持预置垂域意图,不允许自定义表1意图共享注册结构(续)参数名类型默认值必填描述intentVersionString-是意图体系定义的意图版本号,如“1.0.0descriptionArray-是用于意图框架推荐描述意图调用注册结构如表2所示。表2意图调用注册结构参数名类型默认值必填描述intentNameString-是意图名称,名称应当遵循意图框架规范,当前仅⽀持预置垂域意图,不允许自定义intentVersionString-是意图体系定义的意图版本号,如“1.0.0executeModeString-是意图调用类型,可选值:foreground/backgroundexecuteEntryJSON-是意图调用的响应入口:1、foreground则配置deeplink链接(如快应用或原生应用的落地页)2、background则配置响应服务如:content://com.xxx.xxx/methodNameexecuteSyncBooleantrue否意图调用阶段是否同步调用descriptionArray-是用于意图框架推荐描述4意图共享接口决策分发推送意图共享接口决策分发推送云侧意图框架应用云端系统交互入口端侧意图框架应用图4意图共享逻辑示意图IntelligentIntent:意图共享的基础数据单元,应用在调用意图共享接口的时候需要传递意图共享数据,见表3,意图共享数据示例见附录A.1。表3意图共享基础数据单元名称类型共性必选说明intentNameString是是意图名称identifierString是是本次意图共享的唯一id,可用UUID生成,开发者按照自身业务需要生成,作为单条共享记录的唯一标识符。timestampLong是是当前时间戳,单位为毫秒serviceIdArray否是ID一致。intentActionJSON是是用于描述意图的动作┝actionTypeString是是数据或动作的类型:fact(事实)/predict(预测)┝actionTimeJSON是是发生时间、结束时间{"startTime":1729485000989,"endTime":1729485000989}intentEntityJSON是是意图共享实体信息,用于描述意图的垂域实体内容┝entityNameString是是实体名称,如:Navigation┝entityIdString是是实体ID,用于描述实体的唯一标识符,业务可传订单号之类的标识┝isPublicBoolean是是是否与用户行为相关数据┝···(有字段)·········不同垂域特有字段extraJSON否否扩展字段ShareResult:意图共享响应结果,见表4。表4意图共享响应结果名称类型必选说明codeInt是调用状态码,0:成功,其他:失败messageString是错误消息dataJSON否响应结果其他附加内容┝identifierString是意图共享的时候,回传意图idProvider权限声明:<permission<permissionandroid:name="intelligent.permission.SHARE_INTENT"android:protectionLevel="normal"android:label="appcanshareintenttointelligentintentframework"android:description="Allowtheapptocallshareintentanddeleteintentinterface"android:description="Allowtheapptocallshareintentanddeleteintentinterface"/><permissionandroid:name="intelligent.permission.EXECUTE_INTENT"android:protectionLevel="normal"android:label="Applicationscanbecalledbytheintelligentintentframework"android:description="Allowstheapplicationtobecalledbytheintelligentintentframework"/>Provider声明:<provider<providerandroid:name="com.xxx.IntelligentIntentProvider"android:authorities="IntelligentIntent"android:permission="intelligent.permission.SHARE_INTENT"android:enabled="true"android:exported="true"/>ContentProviderauthoritiesIntelligentIntent。settings——adbshell查询:settingsgetglobalsettingsgetglobalintelligent_intent_authoritiesIntelligentIntent——代码查询:valvalauthorities=Settings.Global.getString(context.getContentResolver(),"intelligent_intent_authorities")?:"IntelligentIntent"AndroidManifest.xml:<?xml<?xmlversion="1.0"encoding="UTF-8"?><manifest><uses-permissionandroid:name="intelligent.permission.SHARE_INTENT"/><uses-permissionandroid:name="intelligent.permission.EXECUTE_INTENT"/><queries><providerandroid:authorities="IntelligentIntent"/></queries></manifest>意图共享鉴权流程如图5所示,包括:();云侧意图框架云侧意图框架图5意图共享鉴权流程funcall(authority:String,method:String,arg:String?,extras:Bundle?):BundleContentProviderClient.call(IntelligentIntentProvider,callfuncall(authority:String,method:String,arg:String?,extras:Bundle?):Bundle同步接口如图6所示。1.call(“1.call(“shareIntent”,Bundle(IntelligentIntent))2.Bundle(ShareResult)IntelligentIntentProviderProviderClient应用侧 终端侧图6同步接口对应call方法的参数见表5。表5同步接口call方法参数参数值authorityIntelligentIntentIntelligentIntentmethodshareIntentargnullextras该Bundle需要传递如下内容:-putString(“intentData”,“{…}”)//intentData的内容为JSONString,格式参考IntelligentIntent数据结构描述code10101001–应用无该意图共享权限10101002–应用该意图共享权限已过期1010200110103001101030021010300310103004应用示例代码见附录A.2。ContentProviderClient.call()调用IntelligentIntentProvidercallextra参数除了包含IntelligentIntent之外还需要包含ResultReceiver对象,call()方法的响应值为CallResultShareResult结构。ShareResultIntentShareReceiver的onReceiveResult(7。IntelligentIntentProviderIntentShareReceiverIntelligentIntentProviderIntentShareReceiver(onReceiveResult)ProviderClient1.call(“shareIntentAsync”,Bundle(intelligentIntent+ShareIntentReceiver))2.receiver.send(ShareResult)应用侧 终端侧图7异步接口示意图对应call方法的参数见表6。表6异步接口call方法参数参数值authorityIntelligentIntentmethodshareIntentAsyncargnull表6异步接口call方法参数(续)参数值extrasputString("intentData//intentDataJSONString,格式参考IntelligentIntentputParcelable("shareIntentReceivershareIntentReceiver)//ResultReceivercode10101001–应用无该意图共享权限;10101002–应用该意图共享权限已过期;10102001–意图共享参数错误;10103001–意图共享数据大小超过限制;10103002–意图共享频次超过限制;10103003–意图共享开关已关闭;10103004–意图共享实体数量超限;10103005–意图共享版本不支持。应用示例代码见附录A.3。删除意图包含两个接口,deleteIntent和deleteEntity:——deleteIntent:通过指定共享的意图identifier删除已共享的意图列表;——deleteEntity:删除指定实体id的意图实体对象。deleteIntentContentProviderClient.call(IntelligentIntentProvider,call7。7deleteIntent参数值authorityIntelligentIntentmethoddeleteIntentargnullextras该Bundle需要传递如下内容:putString(“intentName”,“navigation.StartNavigation”)//意图名称putStringArrayList(“identifiers”,arrayListOf(“id1”,“id2”))//意图id列表code10201001–应用无该意图删除权限;10202001–删除意图参数错误;10203001–删除意图失败。应用调用示例代码见附录A.4。deleteEntityContentProviderClient.call(IntelligentIntentProvider,call8。8deleteEntity参数值authorityIntelligentIntentmethoddeleteEntityargnullextrasBundleputString(“intentNameNavigation.NavigationInfo//putStringArrayList(“entityIdsarrayListOf(“abc123//实体idcode10201001–应用无该意图删除权限;10202001–删除意图参数错误;10203001–删除意图失败。应用调用示例代码见附录A.5。foreground)deeplink8。fgcallfgcall用户意图意图调用本地数据bgcall意图调用远程数据应用云端云侧意图框架AppContentProvider本地服务AppContentProviderAppContentProvider端侧意图框架交互入口AppLandingPageAppWidget图8意图调用逻辑示意图IntentParamsIntentParams是意图调用阶段传递给应用的参数,用于携带意图调用过程中的上下文信息,如intentName,parameters等,见表9。表9意图参数数据结构名称类型必选说明intentNameString是意图名称requstIdString是本次意图调用的唯一id,应用完成意图调用逻辑后通知系统返回需要回传该参数executeSyncBoolean是本次意图调用是否是同步调用,默认是同步调用deviceString是触发意图调用的设备信息,可选值:phone/watch/tablet/tv/carentryString是触发意图调用的入口信息,如语音助手entityIdString否当同一入口有多个实例的情况,用于区分是哪一个实例发起的调用。如有用户购买了多张车票,需要查询具体某一张车票信息parametersJSON否意图调用参数,应用解析,如地理位置坐标/用户习惯等,不同垂域应定义不同内容extrasJSON否额外的意图参数ExecuteResult:意图调用回执,由应用传递给系统,见表10。表10意图调用回执参数名称类型必选说明codeInt是调用状态码,0:成功,其他:失败。20301001–无该意图调用权限;20301002–用户未授权该意图调用;203020012030300120303002messageString是错误消息requestIdString是意图参数中的requestIddataJSON否响应结果其他附加内容,不同垂域需不同定义deeplinkhap://com.xxx.xx/indexdeeplinkintentParamsintentParamsJSONStringBase64hap://com.xxx.xx/index?intentParams=base64string。应用拿到该部分intentParams参数内容后对其进行解码,然后转换成JSON对象完成自己的业务逻辑。后台模式支持ContentProvider方式将能力暴露给系统进行调用,系统会调用应用方ContentProvidercallcallbundleProvidercontent://authority/methodName?key=value应用在注册意图调用入口的时候,注册示例如下:content://authority/methodName?key=valuecall方法的调用说明:——authority:provider的认证信息;——methodName:意图调用方法名称,将会被当做call方法的method参数;——key=value:将转换成JSON格式字符串,传递给arg参数;——extras:将携带IntentParams参数信息;——ExecteResult:意图调用响应结果应包含的数据格式。后台意图调用参数规范见图9。图9后台意图调用参数规范ContentProvidercall()ExecuteResultBundleexecuteSynctruefalse。1.call(method+arg+IntentContext1.call(method+arg+IntentContext)2.ExecuteResultProviderClientDomainProvider应用侧 终端侧图10同步意图调用应用开发示例见附录A.6。ExecteIntentReceiverQoSExecteIntentReceiversend。1.call(method+arg+IntentContext+ResultReceiver1.call(method+arg+IntentContext+ResultReceiver)2.receiver.send(ExcuteResult)IntentExecuteReceiver(onReceiveResult)ProviderClientDomainProvider应用侧 终端侧图11异步意图调用应用开发示例见附录A.7。概述除了核心的意图共享、调用接口之外,还有部分工具类接口。查询系统特性状态流程见图12。终端应用queryFeature(featureName)终端应用CallResult图12查询系统特性状态CallResult:查询响应结果,见表11。表11查询响应结果名称类型必选说明codeInt是调用状态码,01040200110403001–未知特性。messageString是错误消息dataJSON否其他响应数据系统特性状态查询包括:——enableIntelligentIntent:查询当前系统是否开启意图框架能力,结果:{{"code":0,"message":"data":{"enableIntelligentIntent":true,}}——userAcceptShareIntent:查询用户是否同意某个应用共享意图,结果:{{"code":0,"message":"data":{"userAcceptShareIntent":true,}}{"code":0,{"code":0,"message":"data":{"querySupportIntent":[{"intentName":"intentName1","support":true,"version":["1.0.0","1.0.1"]},{"intentName":"intentName2","support":false,"version":null}]}}应用调用示例见附录A.8。getSid()getSid()流程见图13。终端应用终端应用图13getSid()getSidIDSID(ShareId)CallResult:查询响应结果,见表12。12getSid名称类型必选说明codeInt是调用状态码,0:成功,其他:失败。10501001–无权限调用getSid接口;10504001getSid10503001getSid10503002–getSid未知异常。messageString是错误消息dataJSON否原生应用:{“sid”:“2fe3a970-efbb-29a0-0add-e5dbbf751ac0”,“type”:“oaid”,—如:oaid/duid/phoneNumber“expire_in”:86400};快应用:增加getSid接口。应用调用示例见附录A.9。valsupport=Settings.Global.getInt(context.getContentResolver(),"support_intelligent_intent")>0settingssupport_intelligent_intent>0valsupport=Settings.Global.getInt(context.getContentResolver(),"support_intelligent_intent")>0错误码见表13。表13错误码规范分类来源类型(1位)功能类型(2位)错误类型(2位)错误编码(3位)枚举–系统(端侧);–应用(端侧);–终端方云侧;–应用方云侧。如:001–无访问权限…图片支持三种数据格式:——网络图片:使用https地址即可,意图框架会去拉取对应的图片资源,需要注意的是:)。——base64base64,base64为头部数据和编译数据。只有两部分完整的数据,才能解析出正确的数据。如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAACOCA...base641K——应用包内图片:对应用包内图片要求如下:app://app_package/androidassetsandroidresandroidFileProvider(FileProviderContentProviderFileProviderURI)content://URI概述云端意图接入包含意图注册、意图共享和意图调用三部分。client_idclient_secret14。表14云端意图注册内容参数名类型默认值必填描述intentNameString-是意图名称,名称应当遵循意图框架规范,当前仅⽀持预置垂域意图,不允许⾃定义intentVersionString-是意图版本号,如“1.0”executeModeStringbackground否意图调用类型,云端只支持background模式表14云端意图注册内容(续)参数名类型默认值必填描述executeEntryString-否意图调用的响应入口(GET):/ServiceEndpoint/,参数支持descriptionArray-否⽤于意图框架推荐描述providerAuthTypeStringnull是支持OAuth2providerOAuthRequestStringnull否curl格式请求命令,意图调用应用方有鉴权必填providerOAuthTokenKeyStringnull否providerOAuthRequest的返回值若带授权码,则此处填写授权码的keyproviderOAuthExpireTimeKeyStringnull否providerOAuthRequest的返回值若带过期时间,则此处填写获取过期时间的keyproviderOAuthExpireTimeIntnull否providerOAuthRequest返回结果若不带过期时间,则填写授权码的过期时间providerOAuthTokenKeyStringnull否访问API服务时,token映射的字段名称providerOAuthTokenAreaStringHEADER否访问APItoken(HEADER、BODY、QUERY)clientAppVersionString-否关联应用及版本号,格式::1234OAuthaccess_token14client_idclient_secret;tokenaccess_token;后续业务需要携带access_token云侧意图框架云侧意图框架图14意图共享鉴权access_token调用业务接口前需先获取授权token(access_token),用于后续参数签名,应用开发者需要进行妥善保存。access_token的有效期通过字段expire_in来标识,默认为2小时(7200秒)有效。重复调用获取tokentoken5300——请求路径:/intent/oauth2/v1/token;——请求方法:GET;——请求头:Content-type:x-www-form-urlencoded。请求参数见表15。15access_token参数名称参数类型是否必须参数描述client_idstring是终端方开放平台申请分配的client_id,18位字符串client_secretstring是终端方开放平台申请分配的client_secret,与client_id配对,64位字符串grant_typestring是固定值“client_credentials”响应体见表16。16access_token参数名称参数类型参数描述备注codeint0表示成功,非0表示失败-messagestring错误信息描述-16access_token()参数名称参数类型参数描述备注dataaccess_tokenstring访问tokenexpire_inint有效时间(秒),7200内的值错误码见表17。17access_tokencode错误描述0请求成功30502001参数错误30502002签名错误30503001系统异常30501001IP被禁止响应体示例见附录A.10。应用云端在请求时需要添加如表18所示请求头。表18数据签名请求头Header类型默认值是否必选说明AuthorizationString-是用户获取的access_tokenX-Client-Send-Utc-MsString-是发起请求时的时间戳,毫秒级,误差允许15分钟X-NonceString-是0-20000范围内的随机数,接口需要签名时必须设置X-Api-SignString-是请求签名,接口需要签名时必须设置X-Api-Sign-Typestringsort否请求签名类型,不传默认sort,即字段排序签名X-Api-Sign所有请求参数按照ASCIInullk1=v1&k2=v2;将access_token2对第3步得到的字符串进行HmacSHA256计算,计算时使用的密钥key为获取使用的client_secret;hash16sign。当请求Body为JSON时,签名时取第一层字段排序签名,值为数组或Map的第一层字段,值转换为JSON字符串。bodykey序后拼接。签名代码逻辑示例见附录A.11。意图调用接口鉴权支持OAuth19。表19意图调用鉴权接口信息参数名类型默认值必填描述providerAuthTypeStringnull是支持OAuth2和NoneproviderOAuthRequestStringnull否curl格式请求命令,意图调用应用侧有鉴权必填providerOAuthTokenKeyStringnull否providerOAuthRequest的返回值若带授权码,则此处填写授权码的keyproviderOAuthExpireTimeKeyStringnull否providerOAuthRequest的返回值若带过期时间,则此处填写获取过期时间的keyproviderOAuthExpireTimeIntnull否providerOAuthRequest返回结果若不带过期时间,则填写授权码的过期时间providerOAuthTokenKeyStringnull否访问API服务时,token映射的字段名称providerOAuthTokenAreaStringHEADER否APItoken(HEADERBODY、QUERY)意图调用鉴权是应用云端对云侧意图框架的调用进行鉴权,流程见图15,描述如下:client_idclient_secret;client_idclient_secretaccess_token;云侧意图框架根据access_tokenaccess_token云侧意图框架云侧意图框架应用云端图15意图调用鉴权意图根据面向的人群不同,可以分为面向特定人群的事件共享和面向指定用户的用户共享:——事件共享:该类共享面向特定人群,比如在天气异常的时候提醒某个特定区域内的所有用户——这两类共享均使用同一接口:——请求路径:/intent/v1/shareIntent;——请求方法:POST;——请求头:Content-type:application/json;Authorization:88F5CEZsArO…wBhS;X-Client-Send-Utc-Ms:1729654789000;X-Nonce:15;X-Api-Sign:88f5…a012;X-Api-Sign-Type:sort。——请求体:{{"intelligentIntent":{"intentName":"意图名称",...},"requestId":"4f93a967effb29a10bdae5c0bf701ac4","target":{//用户类型"targetType":"user",//分发目标ID,需要绑定终端方账号"targetIds":["2fe3a970-efbb-29a0-0add-e5dbbf751ac0"],//设备标识类型"idType":"oaid"}}intelligentIntent:填写意图共享内容,参考IntelligentIntent数据结构。target类型分为两种group和user分别对应事件共享和用户共享两种类型:{{//用户类型"targetType":"group",//用户标签"tags":["young"]}{{//用户类型"targetType":"user",//设备标识,需要绑定设备账号"targetIds":["2fe3a970-efbb-29a0-0add-e5dbbf751ac0"],//设备标识类型"idType":"oaid"}指定用户共享需要携带用户标识targetId,该标识需要通过账号绑定获取流程。1()意图框架端侧提供获取SID(ShareId)接口,在云端用户意图共享场景,需要知道意图数据推送给某台具体设备。流程见图16,包括:getSidSID;SIDSIDSID;端侧意图框架端侧意图框架云侧意图框架系统入口图16账号绑定流程1响应体字段见表20,示例见附录A.12。表20账号绑定流程1响应体字段名称类型字段说明codeInt0表示成功,非0表示失败messageString错误信息描述dataJSON-┝identifierstring请求ID2()由终端方绑定应用账号,需要用户授权,绑定关系记录在终端方,基本流程见图17。云侧意图框架图17账号绑定流程2此场景在意图共享阶段,需要传递的应用账号为绑定阶段返回给终端系统的账号信息,方法如下:{{//用户类型"targetType":"user",//应用方应用账号"identifiers":["应用账号"],//设备标识类型"idType":"appAccount""idType":"appAccount"}deleteIntent请求路径:/intent/v1/deleteIntent请求方法:POST请求头:Content-type:application/jsonAuthorization:88F5CEZsArO…wBhSX-Client-Send-Utc-Ms:1729654789000X-Nonce:15X-Api-Sign:88f5…a012X-Api-Sign-Type:sort请求体:{{"data":{"intentName":"意图名称","identifiers":["xxxxxx"]},"requestId":"4f93a967effb29a10bdae5c0bf701ac4","target":{//用户类型"targetType":"user",//分发目标ID,需要绑定终端方账号"targetIds":["2fe3a970-efbb-29a0-0add-e5dbbf751ac0"],//设备标识类型"idType":"oaid"}}参数说明见表21。21deleteIntent参数名称参数类型是否必须参数描述intentNameString是意图名称identifiersArray是意图id列表响应体见表22。22deleteIntent字段名称类型字段说明codeint0表示成功,非0表示失败messagestring错误信息描述dataJSON未定义错误码见表23。23deleteIntentcode错误描述0请求成功,非0表示失败deleteEntity请求路径:/intent/v1/deleteEntity请求方法:POST请求头:Content-type:application/jsonAuthorization:88F5CEZsArO…wBhSX-Client-Send-Utc-Ms:1729654789000X-Nonce:15X-Api-Sign:88f5…a012X-Api-Sign-Type:sort请求体:{{"data":{"intentName":"意图名称","entityIds":["xxxxxxxxxxxxxx"]},"requestId":"4f93a967effb29a10bdae5c0bf701ac4","target":{//用户类型"targetType":"user",//分发目标ID,需要绑定终端方账号"targetIds":["2fe3a970-efbb-29a0-0add-e5dbbf751ac0"],//设备标识类型"idType":"oaid"}}参数说明见表24。24deleteEntity参数名称参数类型是否必须参数描述intentNameString是意图名称entityIdsArray是实体id列表响应体见表25。25deleteEntity字段名称类型字段说明codeint0表示成功,非0表示失败messagestring错误信息描述dataJSON未定义错误码见表26。26deleteEntitycode错误描述0请求成功https——调用的接口method为GET;——url路径允许拼接意图上下文参数,拼接形式为intentParams=base64(JSONString(IntentParams))。意图上下文定义IntentParams见表27。表27意图上下文参数名称类型必选说明intentNameString是意图名称requestIdString是本次意图调用的唯一id,应用完成意图调用逻辑后通知系统返回需要回传该参数deviceString是触发意图调用的设备信息,可选值:phone/watch/tablet/tv/carentryString是触发意图调用的入口用户信息,如语音助手entityIdString否当同一入口有多个实例的情况,用于区分是哪一个实例发起的调用。如有用户购买了多张车票,需要查询具体某一张车票信息parametersJSON否意图调用参数,应用方应用解析,如地理位置坐标/用户习惯等,不同垂域应定义不同内容表27意图上下文参数(续)名称类型必选说明extrasJSON否额外的意图参数返回数据格式见表28。表28意图调用返回数据格式名称类型必选说明codeInt是调用状态码,0:成功,其他:失败messageString是错误消息dataJSON否响应结果其他附加内容,不同垂域需不同定义附录A()图A.1打车示意图意图注册:{{"intelligentIntents":[{"intentName":"Navigation.StartNavigation","intentVersion":"1.0.0","desc":["打车订单"]}]}意图共享:{{"intentName":"Ridehailing.RecommendRide","identifier":"e82d498d4c0dcab8e82d498d4c0dcab8","timestamp":1740402512123,"serviceId":["4293970000"],"intentAction":{"actionType":"fact","actionTime":{"startTime":1729485000989,"endTime":1729485000989,}},"intentEntity":{"entityName":"","entityId":"202408211736e82d498d4c0dcab8","isPublic":false,"title":"5分钟接驾","shortTitle":"5XXXXXX·A6L","shortContent":"京XXXXXX白","brandNameXX"brandLogo":"https:///XXXX.png","capsule":"5分钟接驾","shortCapsule":"接驾中","capsuleContent":"5分钟接驾","tts":"京XXXXXX白色奥迪A6L,预计5分钟接驾","orderStatus":103,"image":"https:///car.png","buttonDesc":"联系司机","buttonDeeplink":"onetravel://activity?id=TWpreE9ESXlO","progress":20,"progressCount":2}}call//获取authorities//获取authoritiesvalauthorities=Settings.Global.getString(context.getContentResolver(),"intelligent_intent_authorities")?:"IntelligentIntent"//获取ContentProviderClient//获取ContentProviderClientvalclient=context.contentResolver.acquireContentProviderClient(authorities)//调用call方法共享数据valresultBundle=client.call("shareIntent",null,Bundle().apply{//intentData的内容为JSONString//格式参考IntelligentIntent数据结构描述putString("intentData","{...}")})//从resultBundle中获取ShareResult的响应结构,格式为JSONStringvalshareResult=resultBundle.getString("result")valcode=JSONObject(shareResult).getInt("code")if(code==0){//共享数据成功}call继承ResultReceiver类,重写onReceiveResult方法:classMyShareIntentReceiver(handler:Handler?):ResultReceiver(handler){//响应结果将在此函数中实现overridefunonReceiveResult(resultCode:Int,resultData:Bundle?){//resultData数据格式为://-method:回传call方法调用时的方法名,如shareIntentAsync//resultShareResultJSONString//开发者可以解析该数据格式获取响应结果if(resultCode0//失败return}valmethod=resultData.getString("method")if(method=="shareIntentAsync"){valresult=JSONObject(resultData.getString("result"))valcode=result.getInt("code")if(code==0){//共享成功}}}}}调用异步共享://共享数据结果处理器//共享数据结果处理器valreceiver=MyShareIntentReceiver(Handler(Looper.getMainLooper()))//获取ContentProviderClientvalclient=context.contentResolver.acquireContentProviderClient("IntelligentIntent")//调用call方法共享数据valcallResultBundle=client.call("shareIntentAsync",null,Bundle().apply{//intentData的内容为JSONString//格式参考IntelligentIntent数据结构描述putString("intentData","{...}")//传递意图共享结果接收器putParcelable("shareIntentReceiver",receiverForSending(receiver))})privatefunreceiverForSending(actualReceiver:ResultReceiver):ResultReceiver{valparcel=Parcel.obtain()actualReceiver.writeToParcel(parcel,0)parcel.setDataPosition(0)valreceiverForSending=ResultReceiver.CREATOR.createFromParcel(parcel)parcel.recycle()returnreceiverForSending}deleteIntent//获取ContentProviderClient//获取ContentProviderClientvalclient=context.contentResolver.acquireContentProviderClient("IntelligentIntent")//调用call方法共享数据valresultBundle=client.call("deleteIntent",null,Bundle().apply{//意图名称putString("intentName","Navigation.StartNavigation")putString("intentName","Navigation.StartNavigation")//意图id列表putStringArrayList("identifiers",arrayListOf("id1","id2"))})//resultBundleShareResultJSONStringvalshareResults=resultBundle.getString("result")//获取意图删除的响应结果valcode=JSONObject(shareResults).getInt("code")if(code==0){//删除意图数据成功}//获取ContentProviderClient//获取ContentProviderClientvalclient=context.contentResolver.acquireContentProviderClient("IntelligentIntent")//调用call方法共享数据valresultBundle=client.call("deleteIntent",null,Bundle().apply{//意图名称putString("intentName","Navigation.NavigationInfo")//实体id列表,entityIdsputStringArrayList("entityIds",arrayListOf("abc123"))})//从resultBundle中获取ShareResult的响应结构,格式为JSONStringvalshareResults=resultBundle.getString("result")//获取意图删除的响应结果valcode=JSONObject(shareResults).getInt("code")if(code==0){//删除意图数据成功}AndroidManifest.xml:<provider<providerandroid:name="com.xxxmap.MyNavigationIntentProvider"android:authorities="vider"android:enabled="true"android:exported="true"android:exported="true"><intent-filter><actionandroid:name="intelligent.action.ACTION_EXECUTE_INTENT"/></intent-filter></provider>编写意图调用的ContentProvider,如:MyNavigationIntentProvider.kt:classMyNavigationIntentProvider:ContentProvider(){...overridefuncall(authority:String,method:String,arg:String?,extras:Bundle?):Bundle{super.call(authority,method,arg,extras)//1.基本安全检查,应用方也可包含其他检查条件//1.1从意图上下文取出调用idvalrequestId=intentParams.getString("requestId")if(Binder.getCallingUid()!=Process.SYSTEM_UID){//校验失败返回returnBundle().apply{putString("result",JSONObject().apply{putInt("code",1)putString("message","hasnopermission")putString("requestId",requestId)}.toString())}}//2.解析参数//2.1获取意图上下文内容valintentParams=JSONObject(extras!!.getString("intentParams"))//3处理意图请求//3.1处理搜索周边意图if(method=="Navigation.SearchArround"&&isSync){valresult=queryNavigation(intentParams)returnBundle().apply{putString("result",JSONObject().apply{putInt("code",0)putString("message","success")putString("requestId",requestId)putString("data",JSONObject(result).toString())}.toString())}}}else{//3.2不支持场景returnBundle().apply{putString("result",JSONObject().apply{putInt("code",2)putString("message","notsupport")putString("requestId",requestId)}.toString())}}}}AndroidManifest.xml:<provider<providerandroid:name="elligent.MyNavigationIntentProvider"android:authorities="vider"android:enabled="true"android:exported="true"><intent-filter><actionandroid:name="intelligent.action.ACTION_EXECUTE_INTENT"/></intent-filter></provider>编写意图调用的ContentProvider,如:MyNavigationIntentProvider.kt:classclassMyNavigationIntentProvider:ContentProvider(){...overridefuncall(authority:String,method:String,arg:String?,extras:Bundle?):Bundle{super.call(authority,method,arg,extras)//1.基本安全检查,应用方也可包含其他检查条件//1.1从意图上下文取出调用idvalrequestId=intentParams.getString("requestId")//1.2判断是否异步调用valisSync=intentParams.getBoolean("executeSync")?:true//1.3获取ExecuteIntentReceiver对象valreceiver=extras.getParcelable("executeReceiver",ResultReceiver::class.java)if(Binder.getCallingUid()!=Process.SYSTEM_UID||isSync){//1.1校验失败返回receiver.send(1,Bundle().apply{putString("result",JSONObject().apply{putInt("code",1)putString("message","hasnopermission")putString("requestId",requestId)}.toString())})returnBundle();}//2.解析参数//2.1获取意图上下文内容valintentParams=JSONObject(extras!!.getString("intentParams"))//2.3处理查询导航路线意图if(method=="Navigation.QueryNavigation"&&!isSync){//2.3.2异步执行业务逻辑Thread({queryNavigationAsync(intentParams,callId,receiver)}).start()//2.3.3返回returnBundle()}elseif(method=="Navigation.SearchArround"&&isSync){//2.4处理搜索周边意图...}else{//2.5不支持场景receiver.send(2,Bundle().apply{putString("result",JSONObject().apply{putInt("code",2)putString("message","notsupport")putString("requestId",requestId)}.toString())})}returnBundle()}/***2.6异步处理业务逻辑并返回*/privatefunqueryNavigationAsync(intentParams:JSONObject,callId:String,callId:String,receiver:ExecuteIntentReceiver){valresult=queryNavigation(intentParams)receiver.send(0,Bundle().apply{putString("result",JSONObject().apply{putInt("code",0)putString("message","success")putString("requestId",r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政执法证考试试题及答案
- 2025年广东省广州市九年级历史上册期中考试试卷及答案
- 抗生素-微生物在药学中的应用
- 2026年中国专用闪光灯市场调查研究报告
- 2026年中国上贴式贴标机市场调查研究报告
- 2026年中国三工位管端加工机市场调查研究报告
- 2026年中国RF接头市场调查研究报告
- 2026年中国PS塑料镜市场调查研究报告
- 2026年贵州住院医师-贵州住院医师胸心外科历年参考题库含答案解析
- 2026年行政执法考试-公安民警高级执法资格考试历年参考题库含答案解析
- 初中语文九年级微专题教案:基于SOLO分层评价的文学类文本主旨探究教学设计
- 2025年国企中层竞聘笔试题目+答案
- 口腔癌术后口腔冲洗技术-中华护理学会团体标准2024
- 军兵种知识教案及课件
- DBJ33T 1292-2023 装配型附着式升降脚手架安全技术规程
- 普外科医疗组长竞聘演讲
- 食材配送卫生安全管理制度
- 部编版语文六年级上册第二单元-习作:多彩的活动-课件(共33张课件)
- CJT 288-2017 预制双层不锈钢烟道及烟囱
- 护理学基础(高职)全套教学课件
- 三角函数在音乐、艺术中的体现及其教学
评论
0/150
提交评论