定义一个方法获取一段携带参数的 url 中 key 对应的 value

本文介绍两种从URL中解析参数的方法,并通过实例展示了如何将参数转换为对象以方便使用。

思路

给定一段 url 地址,取出后面的参数转换成参数对象,然后再通过 key 找到对应的 value

方法一

let url = 'https://xxxx.com?a=1&b=2&c=&d'
function fn(url, key) {
    let arr = url.substr(url.indexOf('?')+1).split('&')
    let newObj = arr.reduce((obj, item)=>{
        obj[item.split('=')[0]] = item.split('=')[1]
        return obj
    }, {})
    return newObj[key]
}
        
console.log(fn(url, 'd')) // undefined

方法二

let url = 'https://xxxx.com?a=1&b=2&c=zs&d=李';
function p_urlParse(url, key) {
    let obj = {};
    let reg = /[?&][^?&]+=[^?&]+/g;
    let arr = url.match(reg);
    if (arr) {
        arr.forEach((item) => {
        let tempArr = item.substring(1).split('=');
        let key = decodeURIComponent(tempArr[0]);
        let val = decodeURIComponent(tempArr[1]);
        obj[key] = val;
        })
    }
    return obj[key];
};

console.log(p_urlParse(url, 'c')) // 'zs'
https://api.coze.cn/v3/chat 权限点: Bot.chat/Connector.botChat 调用此接口发起一次对话,支持添加上下文和流式响应。 ​ 会话、对话和消息的概念说明,可参考基础概念。 ​ 接口说明 ​ 发起对话接口用于向指定智能体发起一次对话,支持在对话时添加对话的上下文消息,以便智能体基于历史消息做出合理的回复。开发者可以按需选择响应方式,即流式或非流式响应,响应方式决定了开发者获取智能体回复的方式。关于获取智能体回复的详细说明可参考通过对话接口获取智能体回复。 ​ 流式响应:智能体在生成回复的同时,将回复消息以数据流的形式逐条发送给客户端。处理结束后,服务端会返回一条完整的智能体回复。详细说明可参考流式响应。 ​ 非流式响应:无论对话是否处理完毕,立即发送响应消息。开发者可以通过接口查看对话详情确认本次对话处理结束后,再调用查看对话消息详情接口查看模型回复等完整响应内容。详细说明可参考非流式响应。​ 创建会话 API 和发起对话 API 的区别如下:​ 创建会话:​ 主要用于初始化一个新的会话环境。​ 一个会话是Bot和用户之间的一段问答交互,可以包含多条消息。​ 创建会话时,可以选择携带初始的消息内容。​ 发起对话:​ 用于在已经存在的会话中发起一次对话。​ 支持添加上下文和流式响应。​ 可以基于历史消息进行上下文关联,提供更符合语境的回复。​ Header token 扣子 API 通过访问令牌进行 API 请求的鉴权。生成方式可以参考鉴权方式 cztei_lCzZD3QuPfz79P28sQocEN4I66PnEAqQKMkVFCp5UFA7DAtJwjZcfIdUMEJ9vBxrw Query params conversation_id 标识对话发生在哪一次会话中。 会话是 Bot 和用户之间的一段问答交互。一个会话包含一条或多条消息。对话是会话中对 Bot 的一次调用,Bot 会将对话中产生的消息添加到会话中。 可以使用已创建的会话,会话中已存在的消息将作为上下文传递给模型。创建会话的方式可参考创建会话。 对于一问一答等不需要区分 conversation 的场合可不传该参数,系统会自动生成一个会话 一个会话中,只能有一个进行中的对话,否则调用此接口时会报错 4016。 收起 Please enter conversation_id Body params bot_id 要进行会话聊天的智能体 ID。 进入智能体的 开发页面,开发页面 URL 中 bot 参数后的数字就是智能体 ID。例如https://www.coze.cn/space/341****/bot/73428668*****,智能体 ID 为73428668*****。 确保当前使用的访问密钥已被授予智能体所属空间的 chat 权限。 收起 示例:73428668***** 7570901688077271083 user_id 标识当前与智能体对话的用户,由使用方自行定义、生成与维护。user_id 用于标识对话中的不同用户,不同的 user_id,其对话的上下文消息、数据库等对话记忆数据互相隔离。如果不需要用户数据隔离,可将此参数固定为一个任意字符串,例如 123,abc 等。 出于数据隐私及信息安全等方面的考虑,不建议使用业务系统中定义的用户 ID。 展开全部 示例:123 123456789 stream 是否启用流式返回。 true:采用流式响应。 “流式响应” 将模型的实时响应提供给客户端,类似打字机效果。你可以实时获取服务端返回的对话、消息事件,并在客户端中同步处理、实时展示,也可以直接在 completed 事件中获取智能体最终的回复。 false:(默认)采用非流式响应。 “非流式响应” 是指响应中仅包含本次对话的状态等元数据。此时应同时开启 auto_save_history,在本次对话处理结束后再查看模型回复等完整响应内容。可以参考以下业务流程: a. 调用发起会话接口,并设置 stream = false,auto_save_history=true,表示使用非流式响应,并记录历史消息。 你需要记录会话的 Conversation ID 和 Chat ID,用于后续查看详细信息。 b. 定期轮询查看对话详情接口,建议每次间隔 1 秒以上,直到会话状态流转为终态,即 status 为 completed、required_action、canceled 或 failed。 c. 调用查看对话消息详情接口,查询大模型生成的最终结果。 收起 示例:true true additional_messages 对话的附加信息。你可以通过此字段传入历史消息和本次对话中用户的问题。数组长度限制为 100,即最多传入 100 条消息。 若未设置 additional_messages,智能体收到的消息只有会话中已有的消息内容,其中最后一条作为本次对话的用户输入,其他内容均为本次对话的上下文。 若设置了 additional_messages,智能体收到的消息包括会话中已有的消息和 additional_messages 中添加的消息,其中 additional_messages 最后一条消息会作为本次对话的用户输入,其他内容均为本次对话的上下文。 消息结构可参考EnterMessage Object,具体示例可参考携带上下文。 会话或 additional_messages 中最后一条消息应为 role=user 的记录,以免影响模型效果。 如果本次对话未指定会话或指定的会话中无消息时,必须通过此参数传入智能体用户的问题。 收起 Object role 发送这条消息的实体。取: user:代表该条消息内容是用户发送的。 assistant:代表该条消息内容是智能体发送的。 展开全部 示例:user user type 消息类型。默认为 question。 question:用户输入内容。 answer:智能体返回给用户的消息内容,支持增量返回。如果工作流绑定了输出节点,可能会存在多 answer 场景,此时可以用流式返回的结束标志来判断所有 answer 完成。 function_call:智能体对话过程中调用函数(function call)的中间结果。 tool_response:调用工具 (function call)后返回的结果。 如果 autoSaveHistory=true,type 支持设置为 question 或 answer。 如果 autoSaveHistory=false,type 支持设置为 question、answer、function_call、tool_output/tool_response。 其中,type=question 只能和 role=user 对应,即仅用户角色可以且只能发起 question 类型的消息。 展开全部 示例:question question content_type 消息内容的类型,content 不为空时,此参数为必选。支持设置为: text:文本。 object_string:多模态内容,即文本和文件的组合、文本和图片的组合。 card:卡片。此枚举仅在接口响应中出现,不支持作为入参。 content 不为空时,此参数为必选。 展开全部 示例:object_string text content 消息的内容,支持纯文本、多模态(文本、图片、文件混合输入)、卡片等多种类型的内容。 content_type 为 object_string 时,content 为 object_string object 数组序列化之后的 JSON String,详细说明可参考 object_string object。 当 content_type = text **** 时,content 为普通文本,例如 "content" :"Hello!"。 展开全部 示例:[{\"type\":\"text\",\"text\":\"你好我有一个帽衫,我想问问它好看么,你帮我看看\"},{\"type\":\"image\",\"file_id\":\"{{file_id_1}}\"},{\"type\":\"file\",\"file_id\":\"{{file_id_2}}\"},{\"type\":\"file\",\"file_url\":\"{{file_url_1}}\"}] hello meta_data 创建消息时的附加消息,查看消息列表时会返回此附加消息。 自定义对,应指定为 Map 对象格式。长度为 16 对键对,其中键(key)的长度范围为 1~64 个字符,value)的长度范围为 1~512 个字符。 展开全部 示例:- key_1 Enter value custom_variables 智能体中定义的变量。在智能体 prompt 中设置变量 {{key}} 后,可以通过该参数传入变量,同时支持 Jinja2 语法。详细说明可参考变量示例。 变量名只支持英文字母和下划线。 展开全部 示例:{ "language": "英文" } key_1 Enter value auto_save_history 是否保存本次对话记录。 true:(默认)会话中保存本次对话记录,包括 additional_messages 中指定的所有消息、本次对话的模型回复结果、模型执行中间结果。 false:会话中不保存本次对话记录,后续也无法通过任何方式查看本次对话信息、消息详情。在同一个会话中再次发起对话时,本次会话也不会作为上下文传递给模型。 非流式响应下(stream=false),此参数必须设置为 true,即保存本次对话记录,否则无法查看对话状态和模型回复。 调用端插件时,此参数必须设置为 true,即保存本次对话记录,否则提交工具执行结果时会提示 5000 错误,端插件的详细 API 使用示例请参见通过 API 使用端插件。 展开全部 示例:true Please select meta_data 附加信息,通常用于封装一些业务相关的字段。查看对话详情时,扣子会透传此附加信息,查看消息列表时不会返回该附加信息。 自定义对,应指定为 Map 对象格式。长度为 16 对键对,其中键(key)的长度范围为 1~64 个字符,value)的长度范围为 1~512 个字符。 展开全部 示例:{ "uuid": "newid1234" } key_1 Enter value extra_params 附加参数,通常用于特殊场景下指定一些必要参数供模型判断,例如指定经纬度,并询问智能体此位置的天气。 自定义对格式,其中键(key)仅支持设置为: latitude:纬度,此时Value)为纬度,例如 39.9800718。 longitude:经度,此时Value)为经度,例如 116.309314。 展开全部 示例:{"latitude":"39.9800718","longitude":"116.309314"} key_1 Enter value shortcut_command command_id 对话要执行的快捷指令 ID,必须是智能体已绑定的快捷指令。 你可以通过获取智能体配置接口中的ShortcutCommandInfo查看快捷指令 ID。 收起 示例:cmd_123456 Please enter command_id parameters 用户输入的快捷指令组件参数信息。 自定义对,其中键(key)为快捷指令组件的名称,value)为组件对应的用户输入,为 object_string object 数组序列化之后的 JSON String,详细说明可参考 object_string object。 展开全部 示例:{"param1":"[{\"type\":\"text\",\"text\":\"参数1\"}]","param2":"[{\"type\":\"text\",\"text\":\"参数2\"}]"} key_1 Enter value parameters 给自定义参数并传给对话流。你可以根据实际业务需求,在对话流开始节点的输入参数中设置自定义参数,调用本接口发起对话时,可以通过parameters 参数传入自定义参数并传给对话流。示例代码请参见为自定义参数。 仅支持为已发布 API、ChatSDK 的单 Agent(对话流模式)的智能体设置该参数。 收起 示例:{ "user": [ { "user_id": "123456", "user_name": "user" } ] } {} enable_card 设置问答节点返回的内容是否为卡片形式。默认为 false。 true:问答节点返回卡片形式的内容。 false:问答节点返回普通文本形式的内容。 展开全部 示例:true Please select publish_status 智能体的发布状态,用于指定与已发布版本的智能体对话还是和最新草稿版本的智能体对话。默认为 published_online。枚举: published_online:已发布的线上版本。 unpublished_draft:草稿版本。 展开全部 Please select bot_version 指定智能体的版本号,用于与历史版本的智能体进行对话。默认与最新版本的智能体对话。 当 publish_status 设置为 unpublished_draft时,填写此参数会提示 4000 错误。 你可以通过查看智能体版本列表 API 查看智能体的版本号。 展开全部 示例:1756277832*** Please enter bot_version
11-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值