vocechat项目简单的使用介绍
昨天的找群辉文章的时候看到了vocechat,同时在矿神的第三方扩展找到不了它,synology chat很好,但是很多时候安装不上。所以介绍一下vocechat,这款工具
从前做邮箱服务器,添加了100多个帐号,所以这些要用上,恰巧vocechat有第三方帐号的接入。
所以我就的sso,无头绪失败后,
转入到手工写登陆前端 借鉴对接自由帐号流程,写跳转vocechat的流程的代码,后面有全套成品,这里是片段
def login<span class="token punctuation">(</span>self,user,passwd<span class="token punctuation">)</span>: <span class="token assign-left variable">self.smtpcon</span><span class="token operator">=</span>smtplib.SMTP_SSL<span class="token punctuation">(</span><span class="token string">'192.168.1.11'</span><span class="token punctuation">)</span> with self.smtpcon: try: self.smtpcon.login<span class="token punctuation">(</span>user,passwd<span class="token punctuation">)</span> <span class="token builtin class-name">return</span> True except Exception as e: <span class="token builtin class-name">return</span> Falsedef login<span class="token punctuation">(</span>self,user,passwd<span class="token punctuation">)</span>: <span class="token assign-left variable">self.smtpcon</span><span class="token operator">=</span>smtplib.SMTP_SSL<span class="token punctuation">(</span><span class="token string">'192.168.1.11'</span><span class="token punctuation">)</span> with self.smtpcon: try: self.smtpcon.login<span class="token punctuation">(</span>user,passwd<span class="token punctuation">)</span> <span class="token builtin class-name">return</span> True except Exception as e: <span class="token builtin class-name">return</span> Falsedef login(self,user,passwd): self.smtpcon=smtplib.SMTP_SSL('192.168.1.11') with self.smtpcon: try: self.smtpcon.login(user,passwd) return True except Exception as e: return False
在nas后台启动web.py打开一个登陆页面,处理登陆信息,如果login成功,说明用户正确。
2. 在同一个web.py ,用api key,和用户名,提交给vocechat,获取登陆指令
<span class="token function">import</span> urllib3 <span class="token function">import</span> json <span class="token assign-left variable">BASE_URL</span><span class="token operator">=</span><span class="token string">'http://vocechat.domain:8017'</span> <span class="token assign-left variable">KEY</span><span class="token operator">=</span><span class="token string">'Vrxxu2at77PCG3jH7qnXTbo0JcAH18h'</span> def postbylib<span class="token punctuation">(</span>uid,name<span class="token punctuation">)</span>: http <span class="token operator">=</span> urllib3.PoolManager<span class="token punctuation">(</span><span class="token punctuation">)</span> url <span class="token operator">=</span> f<span class="token string">'{BASE_URL}/api/token/create_third_party_key'</span> params <span class="token operator">=</span> <span class="token punctuation">{<!-- --></span><span class="token punctuation">}</span> params<span class="token punctuation">[</span><span class="token string">'userid'</span><span class="token punctuation">]</span><span class="token operator">=</span>uid params<span class="token punctuation">[</span><span class="token string">'username'</span><span class="token punctuation">]</span><span class="token operator">=</span>name headers <span class="token operator">=</span> <span class="token punctuation">{<!-- --></span><span class="token string">'Accept-Charset'</span><span class="token builtin class-name">:</span> <span class="token string">'utf-8'</span>, <span class="token string">'Content-Type'</span><span class="token builtin class-name">:</span> <span class="token string">'application/json'</span>, <span class="token string">'X-SECRET'</span><span class="token builtin class-name">:</span> KEY, <span class="token string">'Content-Type'</span><span class="token builtin class-name">:</span> <span class="token string">'application/json; charset=utf-8'</span><span class="token punctuation">}</span> encoded_data <span class="token operator">=</span> json.dumps<span class="token punctuation">(</span>params<span class="token punctuation">)</span>.encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span> req <span class="token operator">=</span> http.request<span class="token punctuation">(</span><span class="token string">"POST"</span>,url, <span class="token assign-left variable">body</span><span class="token operator">=</span>encoded_data, <span class="token assign-left variable">headers</span><span class="token operator">=</span>headers<span class="token punctuation">)</span> akey <span class="token operator">=</span>req.data.decode<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token builtin class-name">return</span> f<span class="token string">'{BASE_URL}/#/oauth/{akey[1:-1]}'</span> <span class="token assign-left variable">akey</span><span class="token operator">=</span>postbylib<span class="token punctuation">(</span><span class="token string">'wjcroom'</span>,<span class="token string">'王充'</span><span class="token punctuation">)</span> print <span class="token punctuation">(</span>akey<span class="token punctuation">)</span><span class="token function">import</span> urllib3 <span class="token function">import</span> json <span class="token assign-left variable">BASE_URL</span><span class="token operator">=</span><span class="token string">'http://vocechat.domain:8017'</span> <span class="token assign-left variable">KEY</span><span class="token operator">=</span><span class="token string">'Vrxxu2at77PCG3jH7qnXTbo0JcAH18h'</span> def postbylib<span class="token punctuation">(</span>uid,name<span class="token punctuation">)</span>: http <span class="token operator">=</span> urllib3.PoolManager<span class="token punctuation">(</span><span class="token punctuation">)</span> url <span class="token operator">=</span> f<span class="token string">'{BASE_URL}/api/token/create_third_party_key'</span> params <span class="token operator">=</span> <span class="token punctuation">{<!-- --></span><span class="token punctuation">}</span> params<span class="token punctuation">[</span><span class="token string">'userid'</span><span class="token punctuation">]</span><span class="token operator">=</span>uid params<span class="token punctuation">[</span><span class="token string">'username'</span><span class="token punctuation">]</span><span class="token operator">=</span>name headers <span class="token operator">=</span> <span class="token punctuation">{<!-- --></span><span class="token string">'Accept-Charset'</span><span class="token builtin class-name">:</span> <span class="token string">'utf-8'</span>, <span class="token string">'Content-Type'</span><span class="token builtin class-name">:</span> <span class="token string">'application/json'</span>, <span class="token string">'X-SECRET'</span><span class="token builtin class-name">:</span> KEY, <span class="token string">'Content-Type'</span><span class="token builtin class-name">:</span> <span class="token string">'application/json; charset=utf-8'</span><span class="token punctuation">}</span> encoded_data <span class="token operator">=</span> json.dumps<span class="token punctuation">(</span>params<span class="token punctuation">)</span>.encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span> req <span class="token operator">=</span> http.request<span class="token punctuation">(</span><span class="token string">"POST"</span>,url, <span class="token assign-left variable">body</span><span class="token operator">=</span>encoded_data, <span class="token assign-left variable">headers</span><span class="token operator">=</span>headers<span class="token punctuation">)</span> akey <span class="token operator">=</span>req.data.decode<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token builtin class-name">return</span> f<span class="token string">'{BASE_URL}/#/oauth/{akey[1:-1]}'</span> <span class="token assign-left variable">akey</span><span class="token operator">=</span>postbylib<span class="token punctuation">(</span><span class="token string">'wjcroom'</span>,<span class="token string">'王充'</span><span class="token punctuation">)</span> print <span class="token punctuation">(</span>akey<span class="token punctuation">)</span>import urllib3 import json BASE_URL='http://vocechat.domain:8017' KEY='Vrxxu2at77PCG3jH7qnXTbo0JcAH18h' def postbylib(uid,name): http = urllib3.PoolManager() url = f'{BASE_URL}/api/token/create_third_party_key' params = {} params['userid']=uid params['username']=name headers = {'Accept-Charset': 'utf-8', 'Content-Type': 'application/json', 'X-SECRET': KEY, 'Content-Type': 'application/json; charset=utf-8'} encoded_data = json.dumps(params).encode('utf-8') req = http.request("POST",url, body=encoded_data, headers=headers) akey =req.data.decode() return f'{BASE_URL}/#/oauth/{akey[1:-1]}' akey=postbylib('wjcroom','王充') print (akey)
<span class="token operator"><</span>input <span class="token assign-left variable">type</span><span class="token operator">=</span><span class="token string">"submit"</span> <span class="token assign-left variable">class</span><span class="token operator">=</span><span class="token string">"btn"</span> <span class="token assign-left variable">onclick</span><span class="token operator">=</span><span class="token string">"loginFn()"</span>/<span class="token operator">></span> <span class="token operator"><</span>/div<span class="token operator">></span> <span class="token operator"><</span>script <span class="token assign-left variable">src</span><span class="token operator">=</span><span class="token string">"./jquery.min.js"</span><span class="token operator">></span><span class="token operator"><</span>/script<span class="token operator">></span> <span class="token operator"><</span>script<span class="token operator">></span> <span class="token keyword">function</span> HTMLEncode<span class="token punctuation">(</span>text<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> text <span class="token operator">=</span> text.replace<span class="token punctuation">(</span>/<span class="token operator">&</span>/g, <span class="token string">"&"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> text <span class="token operator">=</span> text.replace<span class="token punctuation">(</span>/<span class="token operator"><</span>/g, <span class="token string">"‘<‘"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> text <span class="token operator">=</span> text.replace<span class="token punctuation">(</span>/<span class="token operator">></span>/g, <span class="token string">"‘>‘"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token builtin class-name">return</span> text<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-name function">loginFn</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> console.log<span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span> username:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span>, password:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> $.ajax<span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span> url:<span class="token string">'/loginvocechat'</span>, method:<span class="token string">'POST'</span>, data:<span class="token punctuation">{<!-- --></span> username:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span>, password:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span>, success:function<span class="token punctuation">(</span>res<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> // 成功 console.log<span class="token punctuation">(</span>res<span class="token punctuation">)</span> console.log<span class="token punctuation">(</span>res.re<span class="token punctuation">)</span> if<span class="token punctuation">(</span>res.code <span class="token operator">==</span> <span class="token number">200</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token assign-left variable">window.location.href</span><span class="token operator">=</span>res.re <span class="token punctuation">}</span> <span class="token punctuation">}</span>, error:function<span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> // 失败 console.log<span class="token punctuation">(</span><span class="token string">"shayemeiyou"</span><span class="token punctuation">)</span> console.log<span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token operator"><</span>/script<span class="token operator">></span><span class="token operator"><</span>input <span class="token assign-left variable">type</span><span class="token operator">=</span><span class="token string">"submit"</span> <span class="token assign-left variable">class</span><span class="token operator">=</span><span class="token string">"btn"</span> <span class="token assign-left variable">onclick</span><span class="token operator">=</span><span class="token string">"loginFn()"</span>/<span class="token operator">></span> <span class="token operator"><</span>/div<span class="token operator">></span> <span class="token operator"><</span>script <span class="token assign-left variable">src</span><span class="token operator">=</span><span class="token string">"./jquery.min.js"</span><span class="token operator">></span><span class="token operator"><</span>/script<span class="token operator">></span> <span class="token operator"><</span>script<span class="token operator">></span> <span class="token keyword">function</span> HTMLEncode<span class="token punctuation">(</span>text<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> text <span class="token operator">=</span> text.replace<span class="token punctuation">(</span>/<span class="token operator">&</span>/g, <span class="token string">"&"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> text <span class="token operator">=</span> text.replace<span class="token punctuation">(</span>/<span class="token operator"><</span>/g, <span class="token string">"‘<‘"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> text <span class="token operator">=</span> text.replace<span class="token punctuation">(</span>/<span class="token operator">></span>/g, <span class="token string">"‘>‘"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token builtin class-name">return</span> text<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-name function">loginFn</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> console.log<span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span> username:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span>, password:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> $.ajax<span class="token punctuation">(</span><span class="token punctuation">{<!-- --></span> url:<span class="token string">'/loginvocechat'</span>, method:<span class="token string">'POST'</span>, data:<span class="token punctuation">{<!-- --></span> username:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span>, password:<span class="token variable"><span class="token variable">$(</span>'<span class="token variable">)</span></span>.val<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span>, success:function<span class="token punctuation">(</span>res<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> // 成功 console.log<span class="token punctuation">(</span>res<span class="token punctuation">)</span> console.log<span class="token punctuation">(</span>res.re<span class="token punctuation">)</span> if<span class="token punctuation">(</span>res.code <span class="token operator">==</span> <span class="token number">200</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token assign-left variable">window.location.href</span><span class="token operator">=</span>res.re <span class="token punctuation">}</span> <span class="token punctuation">}</span>, error:function<span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> // 失败 console.log<span class="token punctuation">(</span><span class="token string">"shayemeiyou"</span><span class="token punctuation">)</span> console.log<span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token operator"><</span>/script<span class="token operator">></span><input type="submit" class="btn" onclick="loginFn()"/> </div> <script src="./jquery.min.js"></script> <script> function HTMLEncode(text) { text = text.replace(/&/g, "&"); text = text.replace(/</g, "‘<‘"); text = text.replace(/>/g, "‘>‘"); return text; } function loginFn() { console.log({ username:$(').val(), password:$(').val() }) $.ajax({ url:'/loginvocechat', method:'POST', data:{ username:$(').val(), password:$(').val() }, success:function(res) { // 成功 console.log(res) console.log(res.re) if(res.code == 200) { window.location.href=res.re } }, error:function(err) { // 失败 console.log("shayemeiyou") console.log(err) } } ) } </script>
第二章接入chatgpt
在本地或远程部署一个nodejs的项目,需要用到npm
然后设定四个环境变量
https://doc.voce.chat/zh-cn/bot/demo-gpt
介绍在这里
然而
我在本地环境失败,远程按部署步骤都结束了,
Deploy
Vercel
Host your own live version of Chatbot UI with Vercel.
Deploy with Vercel
Vercel也不知道怎么收费,总之上线正常,也找到setting,加入了环境变量,起码openai的变量生效起作用了。
Chatbot UI 看起来不错,看样子,谁都可以用。
所以剩下的就是我在这里凌乱去吧。
这是个处于发展中的不错的项目吧,才感觉到好神奇。有意思。
原文链接:https://blog.csdn.net/wjcroom/article/details/131733731?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227b75db28fae554b5e97e529a0f13f486%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=7b75db28fae554b5e97e529a0f13f486&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-26-131733731-null-null.nonecase&utm_term=%E7%BE%A4%E6%99%96%E6%90%AD%E5%BB%BA