|
|
|
@ -612,7 +612,7 @@ object AgentService : CoroutineScope { |
|
|
|
val responseBuilder = StringBuilder() |
|
|
|
var aiMetadata:String = "" |
|
|
|
var userMetadata = JSONObject() |
|
|
|
var broadcast = false //是否播发 |
|
|
|
var broadcast = true //是否播发 |
|
|
|
// 如果有图片,添加图片信息到元数据 |
|
|
|
if (hasImage) { |
|
|
|
userMetadata.put("hasImage", true) |
|
|
|
@ -739,13 +739,13 @@ object AgentService : CoroutineScope { |
|
|
|
override fun onFunctionCallResult(functionCall: JSONObject, functionCallResult: JSONObject) { |
|
|
|
audioPlayer?.stopAudio() |
|
|
|
val name = functionCall.get("name") as String; |
|
|
|
val (metestr, _broadcast)= autoHandleFcunCallResult(name,functionCallResult); |
|
|
|
aiMetadata = metestr; |
|
|
|
broadcast = _broadcast |
|
|
|
val resultmap = autoHandleFcunCallResult(name,functionCallResult); |
|
|
|
aiMetadata = resultmap["meta"] as String; |
|
|
|
broadcast = resultmap["broadcast"] as Boolean; |
|
|
|
sendEvent("function_call_result", mapOf( |
|
|
|
"function_call" to functionCall.toString(), |
|
|
|
"result" to functionCallResult.toString(), |
|
|
|
"meta" to metestr, |
|
|
|
"meta" to aiMetadata, |
|
|
|
)) |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1116,7 +1116,7 @@ object AgentService : CoroutineScope { |
|
|
|
/* |
|
|
|
* 自动播放音乐 |
|
|
|
* */ |
|
|
|
fun autoHandleFcunCallResult(toolname:String,functionCallResult: JSONObject): Pair<String, Boolean>{ |
|
|
|
fun autoHandleFcunCallResult(toolname:String,functionCallResult: JSONObject): Map<String,Any>{ |
|
|
|
println("协议工具返回数据 检查是否存在卡片! functionCallResult: ${functionCallResult}") |
|
|
|
try { |
|
|
|
val contentStr = functionCallResult.optString("context") |
|
|
|
@ -1126,13 +1126,18 @@ object AgentService : CoroutineScope { |
|
|
|
println("协议工具返回数据 检查是否存在卡片! textStr: ${textStr}") |
|
|
|
val metadata: MutableMap<String, Any> = mutableMapOf() |
|
|
|
var broadcast = true; |
|
|
|
var notreply = false; |
|
|
|
if (textStr.isNotEmpty()) { |
|
|
|
val meta = JSONObject(textStr) |
|
|
|
metadata[toolname] = meta // 现在可以赋值 |
|
|
|
val metaStr = JSONObject(metadata as Map<*, *>).toString() |
|
|
|
if (meta.has("broadcast")){ |
|
|
|
broadcast = meta["broadcast"] as Boolean |
|
|
|
} |
|
|
|
if (meta.has("notreply")){ |
|
|
|
notreply = meta["notreply"] as Boolean |
|
|
|
} |
|
|
|
metadata[toolname] = meta // 现在可以赋值 |
|
|
|
metadata["notreply"] = notreply // 现在可以赋值 |
|
|
|
val metaStr = JSONObject(metadata as Map<*, *>).toString() |
|
|
|
// Log.d(TAG, "mcp调用结果: $metaStr") |
|
|
|
if (meta.has("card_music")) { //音乐卡片 |
|
|
|
val cardMusic = meta.getJSONObject("card_music") |
|
|
|
@ -1190,13 +1195,13 @@ object AgentService : CoroutineScope { |
|
|
|
val end = cardNavigation.optString("end", "") |
|
|
|
processNavigation(start, end); |
|
|
|
} |
|
|
|
return Pair(metaStr, broadcast); |
|
|
|
return mapOf("meta" to metaStr, "broadcast" to broadcast,"notreply" to notreply); |
|
|
|
} |
|
|
|
} catch (e: Exception) { |
|
|
|
// 捕获其他类型的异常(可选) |
|
|
|
println("为解析到卡片数据!") |
|
|
|
} |
|
|
|
return Pair("", true); |
|
|
|
return mapOf("meta" to "", "broadcast" to true,"notreply" to false); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
|