Преглед изворни кода

remove echo server to standalone file

master
Patrick Peng Sun пре 8 година
родитељ
комит
b24d18de28
1 измењених фајлова са 0 додато и 117 уклоњено
  1. +0
    -117
      serveCommand.go

+ 0
- 117
serveCommand.go Прегледај датотеку

@@ -1,127 +1,10 @@
package main

import (
"fmt"
"log"
"os"
)

func serveCommand(openID string, in InWechatMsg) (state chatState, processed bool) {
log.Println("process command")
return echoCommand(openID, in)
}

func echoCommand(openID string, in InWechatMsg) (state chatState, processed bool) {
processed = true
str, err := BuildTextMsg(openID, "default")
log.Println(in.header.MsgType)
switch in.body.(type) {
case TextMsg:
m := in.body.(TextMsg)
str, err = BuildTextMsg(openID, m.Content+"\n\n关键词 [转接] 将后续信息都转接到 客服")
if m.Content == "转接" {
processed = false
}

case PicMsg:
m := in.body.(PicMsg)
str = buildPicMsg(openID, m.MediaId)

case VoiceMsg:
m := in.body.(VoiceMsg)
str = buildVoiceMsg(openID, m.MediaId)
kfSendTxt(openID, "翻译结果:"+m.Recognition)
case VideoMsg:
m := in.body.(VideoMsg)
str = buildVideoMsg(openID, "e2iNEiSxCX5TV1WbFd0TQMn5lilY3bylh1--lDBwi7I", "航拍春日哈工大", m.MediaId)
case ShortVideoMsg:
m := in.body.(ShortVideoMsg)
str = buildVideoMsg(openID, "e2iNEiSxCX5TV1WbFd0TQMn5lilY3bylh1--lDBwi7I", "航拍春日哈工大", m.MediaId)
case LocationMsg:
m := in.body.(LocationMsg)
mid := location2MediaID(m.Location_X, m.Location_Y)
//str, _ = BuildTextMsg(openID, fmt.Sprintf("long=%f, lat=%f, scale=%d", m.Location_X, m.Location_Y, m.Scale))
str = buildPicMsg(openID, mid)
url := location2URL(m.Location_X, m.Location_Y)
kfSendTxt(openID, url)

case LinkMsg:
m := in.body.(LinkMsg)
kfSendTxt(openID, m.Title+m.Description)
str, _ = BuildTextMsg(openID, m.Url)
case EventMsg:
return echoEvents(openID, in)
default:
str, err = BuildTextMsg(openID, "text message")
}

state.OpenID = openID
state.Procedure = ""
state.response = str
log.Println(str)
if err != nil {
log.Println("build response failed")
processed = false
}
//state is any state that
return
}

func echoEvents(openID string, in InWechatMsg) (state chatState, processed bool) {
processed = true
str := ""
m := in.body.(EventMsg)
log.Println("Event = " + m.Event)
switch m.Event {
case "LOCATION":
mid := location2MediaID(m.Latitude, m.Longitude)
str = buildPicMsg(openID, mid)
case "CLICK":
str, _ = BuildTextMsg(openID, m.EventKey)
case "subscribe":
str, _ = BuildTextMsg(openID, m.EventKey)
case "unsubscribe":
str, _ = BuildTextMsg(openID, m.EventKey)
case "SCAN":
str, _ = BuildTextMsg(openID, m.EventKey)
case "VIEW":
str, _ = BuildTextMsg(openID, m.EventKey)
case "kf_create_session":
kfSendTxt(openID, m.KfAccount)
//str, _ = BuildTextMsg(openID, m.KfAccount) // response msg is ignored by wechat
case "kf_close_session":
kfSendTxt(openID, m.KfAccount+"\n close type ="+m.CloseType)
//str, _ = BuildTextMsg(openID, m.KfAccount+"\n close type ="+m.CloseType) //response msg is ignored by wechat
case "scancode_waitmsg":
log.Println(m.ScanCodeInfo.ScanResult)
log.Println(m.ScanCodeInfo.ScanType)
msg := fmt.Sprintf("ScanResult =%s, ScanType=%s", m.ScanCodeInfo.ScanResult, m.ScanCodeInfo.ScanType)
kfSendTxt(openID, msg)
case "pic_photo_or_album":
msg := fmt.Sprintf("Count = %d ", m.SendPicsInfo.Count)
log.Println(m.SendPicsInfo.Count)
for _, v := range m.SendPicsInfo.PicList.Item {
log.Println(v.PicMd5Sum)
kfSendTxt(openID, v.PicMd5Sum)
}
kfSendTxt(openID, msg)
default:
str, _ = BuildTextMsg(openID, " unknown event:"+m.Event)
}
state.response = str
return
}

func location2MediaID(lat, long float64) (mediaID string) {
url := fmt.Sprintf("https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&markers=color:red|label:S|%f,%f&zoom=17&size=1280x2014", lat, long, lat, long)
file, _, _ := saveURL(url)
mediaID = uploadImage(file)
os.Remove(file)
return
}

func location2URL(lat, long float64) (url string) {
url = fmt.Sprintf("http://maps.google.com/maps?z=12&t=m&q=loc:%f+%f", lat, long)
log.Println(url)
return
}

Loading…
Откажи
Сачувај