以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于简单的微信的客服系统  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=149154)

--  作者:lemonkashi
--  发布时间:2020/4/24 16:12:00
--  关于简单的微信的客服系统
关于简单的微信的客服系统  那里例子非常实用。我们单位也行用。
但是里面代码不适用了,老师能不能帮我们翻译成现在能使用的代码 我们借鉴一下。
自己改起来有点费劲。

谢谢老师


--  作者:有点蓝
--  发布时间:2020/4/24 16:25:00
--  
请提出具体的问题!改起来什么地方有问题?

比如服务端接收聊天窗口信息后,wechatReceivedMessage事件:

\'处理接收到客户端的消息,然后转发到指定用户微信\'
Dim userid = e.WeChatID
If e.ContentType = 0 Then \'本例子只处理文本消息
    Dim drUser As DataRow = DataTables("微信用户").Find(CExp("[_Identify]={0} ",userid))
    If drUser IsNot Nothing Then
        Dim text = WeChat.SendMessageHelper.GetSendMessage(WeChat.ApiType.MP, "text") 

        text.touser = drUser("OpenID")
        text.AddContent(e.Content)
        Dim weRet = WeChat.WeChatServer.Server(Vars("mpappid")).SendMsgController.SendMessage(text.ToJson(True)) \'发送消息到微信
        If not weRet.Success Then
            Functions.Execute("logText",weRet.ErrorMessage & "|" & text.ToJson(True))
        End If
        
    End If
End If

改为

Dim userid = e.WeChatID
If e.ContentType = 0 Then \'本例子只处理文本消息
    Dim drUser As DataRow = DataTables("微信用户").Find(CExp("[_Identify]={0} ",userid))
    If drUser IsNot Nothing Then
        Dim jo As New JObject
        jo("touser") = drUser("OpenID")
        jo("msgtype") = "text"
        jo("text") =  New JObject
        jo("text")("content") = e.Content
        
        Dim URL As String = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}"
        Dim hc As New HttpClient(CExp(URL, Functions.Execute("GetAccessToken")))
        hc.Content = jo.ToString()
        jo = JObject.Parse(hc.GetData())
        If jo("errcode") <> "0" Then
            Functions.Execute("logText",jo("errmsg") & "|" & text.ToJson(True))
        End If
        
    End If
End If

--  作者:lemonkashi
--  发布时间:2020/4/24 16:48:00
--  
谢谢 蓝老师 我根据例子 我尝试自己改改。遇到问题我在发上来  !
--  作者:lemonkashi
--  发布时间:2020/4/24 19:34:00
--  
Select Case e.host

    Case "192.168.100.7","127.0.0.1","wechat.foxtable.com"

        Select Case e.Path

            Case "FoxTest"

                Dim wechatServ As WeChat.WeChatPublicNo = WeChat.WeChatServer.Server("wx506f113977c3a8a3")

                Dim ret = wechatServ.ProcessMessage(e.Request,"ProcessRequestMsg")

                e.WriteString(ret)

        End Select

End Select

蓝老师 这部分代码怎么改


我改到如下形式 服务器报错

  ElseIf e.Request.HttpMethod = "Post"

                    Dim xo As Foxtable.XObject = Foxtable.XObject.Parse(e.PlainText)

                    Dim st As New Date(1970,1,1,8,0,0)

                    Select Case xo("MsgType")

                        Case "text","image","voice","video","shortvideo" \'为了简单,这里只保存文本?图片?语音和视频消息.

                             Functions.Execute("ProcessRequestMsg",e.Request)

                    End Select

End If

通过公众号发消息

弹出错误信息

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.3.31.8
错误所在事件:自定义函数ProcessRequestMsg
详细错误信息:
调用的目标发生了异常。
未找到类型“HttpListenerRequest”的公共成员“MsgType”。



--  作者:lemonkashi
--  发布时间:2020/4/25 0:03:00
--  
蓝老师好   经过一晚上的努力  上述问题基本解决了
1.修改 ProcessRequestMsg 接收数据的方式
2.回消息的时候   jo("touser") = drUser("OpenID") 要做转换成字符串 要不报错。
这样目前收发文字消息的都可以了。

现在有一个OPenQQ的问题:
1.由于QQserver和httpserver 都是放在云服务器上。
 QQserver 我在本地连的时候得输入公网的IP地址目前输入 点登陆显示  规定时间内未获取服务器响应。
这个应该怎么部署。
2.如果是微信端发图片元素我该怎么接收 请提醒一下,谢谢

--  作者:有点蓝
--  发布时间:2020/4/26 9:19:00
--  
1、QQserver 的启动IP改为"0.0.0.0"
2、图片消息接收到的是MediaId,根据MediaId调用接口下载或者上传图片:http://www.foxtable.com/mobilehelp/topics/0181.htm

--  作者:lemonkashi
--  发布时间:2020/4/26 22:26:00
--  
发图片

  在服务器上测试可以 ,图片大小是19.9K
在本地连网络QQserver 显示图片加载失败  有什么限制吗  比如下载时间 或者图片大小

 

谢谢蓝老师
[此贴子已经被作者于2020/4/26 22:30:54编辑过]

--  作者:有点蓝
--  发布时间:2020/4/26 22:38:00
--  
应该是网络穿透的原因。本地服务器还是云服务器?http://www.foxtable.com/webhelp/topics/3034.htm
--  作者:lemonkashi
--  发布时间:2020/4/27 16:22:00
--  
我现在测试环境是直接连接部署在腾讯云的QQSERVER 服务端
--  作者:有点蓝
--  发布时间:2020/4/27 16:49:00
--  
安全组、和系统防火墙都要开启一个udp的端口范围,和启动openQQ的端口范围一致:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=714467&ID=104284&skin=1