[UNIT] C#利用API调用UNIT
goJhou 发布于2017-10 浏览:40759 回复:55
7
收藏

以下是类内的静态变量。用于管理状态及TOKEN信息,SESSION信息。

// 调用getAccessToken()获取的 access_token建议根据expires_in 时间 设置缓存
        // 返回token示例
        public static readonly String TOKEN = getAccessToken();

        public static bool IsFinishedThisUnit;
        private static string sessionId="";
        private static bool first=true;

下面是一段 c#调用百度API接口,获取临时token值。

public static string getAccessToken()
        {
            String clientId = 【这里填入APPID】;
            String clientSecret = 【这里填入APPSECRET】;
            String authHost = "https://aip.baidubce.com/oauth/2.0/token";
            HttpClient client = new HttpClient();
            List> paraList = new List>();
            paraList.Add(new KeyValuePair("grant_type", "client_credentials"));
            paraList.Add(new KeyValuePair("client_id", clientId));
            paraList.Add(new KeyValuePair("client_secret", clientSecret));

            HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
            String result = response.Content.ReadAsStringAsync().Result;
            //Console.WriteLine(result);
            JObject res = JObject.Parse(result);
            return res["access_token"].ToString();
        }

再根据TOKEN调用UNIT通用API接口获取返回json字符串并分析字符串指向的方法

public static JObject Unit_Send(string Content)
        {
            IsFinishedThisUnit = false;
            string host = "https://aip.baidubce.com/rpc/2.0/solution/v1/unit_utterance?access_token=" + TOKEN;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
            request.Method = "post";
            request.ContentType = "application/json";
            request.KeepAlive = true;
            string str = "{\"scene_id\":【这里填入UNIT场景ID】,\"query\":\"" + Content + "\", \"session_id\":\"" + sessionId + "\"}"; // json格式
            byte[] buffer = Encoding.UTF8.GetBytes(str);
            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            JObject res = JObject.Parse(reader.ReadToEnd());
            if (res["error_code"] == null)
            {
                sessionId = res["result"]["session_id"].ToString();
                if (res["result"]["action_list"][0]["action_type"]["act_type"].ToString() == "satisfy")
                {
                    //意图完成
                    IsFinishedThisUnit = true;
                    return res;
                }
                else if (res["result"]["action_list"][0]["action_type"]["act_type"].ToString() == "clarify")
                {
                    //意图未完成
                    Console.Write(res["result"]["action_list"][0]["say"].ToString());
                    return null;
                }
                else
                {
                    //未知意图 可加本地日志记录逻辑 以后期扩充样本集
                    Console.Write("你到底想干嘛?");
                    return null;
                }
            }
            else
            {
                return null;
            }
        }
    }
收藏
点赞
7
个赞
共55条回复 最后由用户已被禁言回复于2022-04
#36卡农LLLL回复于2017-11

有个人可以问真好.

0
#35goJhou回复于2017-11
#34 卡农LLLL回复
...IT小哥哥...(☄⊙ω⊙)☄.这帖子要收藏起来.我马上就要用了.
展开

欢迎跟帖提问

0
#34卡农LLLL回复于2017-11

...IT小哥哥...(☄⊙ω⊙)☄.这帖子要收藏起来.我马上就要用了.

0
#33笔墨哥回复于2017-11
#32 goJhou回复
听了一遍就关了。。。

额,看来你不喜欢呀

0
#32goJhou回复于2017-11
#31 笔墨哥回复
有没有被洗脑呀~

听了一遍就关了。。。

0
#31笔墨哥回复于2017-11
#30 goJhou回复
听过

有没有被洗脑呀~

0
#30goJhou回复于2017-11
#29 笔墨哥回复
可以去听听,这首歌还不错

听过

0
#29笔墨哥回复于2017-11
#28 goJhou回复
= =害怕

可以去听听,这首歌还不错

0
#28goJhou回复于2017-11
#27 笔墨哥回复
好吧~之前参加百度校园【IT小哥哥】神曲活动被洗脑了……

= =害怕

0
#27笔墨哥回复于2017-11
#26 goJhou回复
别这么娘。。。。

好吧~之前参加百度校园【IT小哥哥】神曲活动被洗脑了……

0
#26goJhou回复于2017-11
#25 笔墨哥回复
我就是男的呀~

别这么娘。。。。

0
#25笔墨哥回复于2017-11
#24 goJhou回复
。。。。。你不是男的吗

我就是男的呀~

0
#24goJhou回复于2017-11
#23 笔墨哥回复
那好吧,IT小哥哥~

。。。。。你不是男的吗

0
#23笔墨哥回复于2017-11
#22 goJhou回复
。。。。你说别的都行。。。

那好吧,IT小哥哥~

0
#22goJhou回复于2017-11
#21 笔墨哥回复
不要谦虚嘛~不然我要说些什么呢~

。。。。你说别的都行。。。

0
#21笔墨哥回复于2017-11
#20 goJhou回复
- -。。。。。你别夸我了。我好慎得慌

不要谦虚嘛~不然我要说些什么呢~

1
#20goJhou回复于2017-11
#19 笔墨哥回复
好哒~说的不错~

- -。。。。。你别夸我了。我好慎得慌

1
#19笔墨哥回复于2017-11
#18 goJhou回复
15L那里讲错一句话。 使用sessionID的好处是可以获取上一轮及之前 *意图* 填充的词槽情况(词槽继承、复用词槽)。如果开了新会话就都没了。   2个不同的sessionID会话之间的词槽情况是完全隔离的,没有任何关系。
展开

好哒~说的不错~

1
#18goJhou回复于2017-11
#17 一个秂的黑聿白回复
谢谢大神解惑

15L那里讲错一句话。

使用sessionID的好处是可以获取上一轮及之前 *意图* 填充的词槽情况(词槽继承、复用词槽)。如果开了新会话就都没了。

 

2个不同的sessionID会话之间的词槽情况是完全隔离的,没有任何关系。

1
#17一个秂的黑聿白回复于2017-11

谢谢大神解惑

0
TOP
切换版块