Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Dec 01 07:54
    54bp6cl6 closed #18
  • Dec 01 07:54
    54bp6cl6 commented #18
  • Dec 01 07:54
    54bp6cl6 commented #18
  • Dec 01 07:53
    54bp6cl6 opened #18
  • Apr 24 17:05

    kkdai on master

    upgrade to go 1.12.2 (compare)

  • Apr 24 16:57

    kkdai on master

    Add message quota (compare)

  • Apr 24 16:45

    kkdai on master

    update SDK (compare)

  • Dec 28 2018 18:09
    kkdai closed #15
  • Dec 28 2018 18:09
    kkdai commented #15
  • Dec 28 2018 18:07
    kkdai commented #17
  • Dec 28 2018 18:07
    kkdai closed #17
  • Dec 28 2018 07:06
    poker31715 opened #17
  • Oct 09 2018 01:57
    kkdai commented #16
  • Oct 09 2018 01:56
    kkdai closed #16
  • Sep 30 2018 20:08
    kamisamatenshi synchronize #16
  • Sep 30 2018 20:07
    kamisamatenshi synchronize #16
  • Sep 30 2018 20:05
    kamisamatenshi synchronize #16
  • Sep 30 2018 19:59
    kamisamatenshi synchronize #16
  • Sep 30 2018 19:53
    kamisamatenshi synchronize #16
  • Sep 30 2018 19:50
    kamisamatenshi synchronize #16
synr
@synr

@kkdai
原來真的不是陣列啊!感謝解答,我大概會用了 XD

我後來測一段時間,還是想搞定捕捉用戶的其他類型訊息。
因為這樣才有機會可以應用得更廣。
但最後發現要捕捉用戶傳的 圖片、影片、聲音跟其他的比起來真的很難搞。
我到現在還是失敗中沒試成功 囧

我看了 官方 GO 的範例寫法 研究很久。
handleImagehandleVideohandleAudio 往回追到 handleHeavyContentsaveContent
覺得關鍵應該就是他們了,但就是仿不起來 囧

如果我沒有誤會的話,看他的寫法 感覺上,好像是要把用戶的多媒體訊息另外寫入成暫存檔存在伺服器( heroku?),才可以取得 URL。
也就是說,這種設計有點不想讓人透過 SDK ,直接得到他們 LINE 伺服器現存的多媒體檔案 URL?
如我照他範例的方式可能要透過 IO 之類的操作去複製一份存在自己伺服器,才能使用。
沒辦法像 message.Text 直接可以拿現成的數據來運用。

synr
@synr

可能因為我對 GO 語言的 IO 讀寫的寫法還不熟吧。
老是沒有成功。

試用了 GetMessageContent 感覺方向應該對,但最後又卡住了。
下面這些我是寫在確定會讓用戶發送圖片訊息的時觸發的區域 case *linebot.ImageMessage

    content, err := bot.GetMessageContent(message.ID).Do()
    if err != nil {
        log.Print(err)
    }
    defer content.Content.Close()

    //觀察用
    log.Print("content.ContentType = " + content.ContentType)
    log.Print("content.ContentLength = ")
    log.Print(content.ContentLength) //檔案大小??
    log.Print("content.Content = ")
    log.Print(content.Content)
    //感覺應該是要把 content.Content 存起來才可以?

之後因為逛到 這個 所以想說學他看看就加了下面這段 JPG

    // 試了一下查到可以處理圖片的寫法(也可能寫錯?)
                image, err := jpeg.Decode(content.Content)
                if err != nil {
                    log.Print(err)
                }
                log.Printf("image %v", image.Bounds())

到這裡以為已經可以了???
結果出來的是我看不懂的東西XD


後來再繼續找資料寫寫看
還是都失敗(直接編譯器無法過關)

我是加寫失敗的是下面這樣

 file, err := ioutil.TempFile("temp.jpg", "")
if err != nil {
     log.Print(err)
 }
defer file.Close()

 _, err = ioutil.WriteFile("temp.jpg", []byte(image.Bounds()), 0600)    //這種也失敗→   //io.Copy(file, content.Content)
 if err != nil {
     log.Print(err)
 }
 log.Printf("Saved %s", file.Name())

感覺要取用多媒體訊息好困難,卡在這好久 XD
我猜應該是 我在寫儲存檔案的地方犯了什麼大錯吧
才會連編譯器那關都 GG
編譯器好像是說型態不合


另外還找到這個 GAE/GoでLineBotをつくったよ〜 - ベーコンの裏
裡面提到

LineBotSDK で画像を受け取るときに、Message.OriginalContentURL からURL引っ張ってくるのではなくて

content, err := bot.GetMessageContent(message.ID).WithContext(c).Do()

好像是說要用 .GetMessageContent 才能取得圖片。
但我直接複製他的 Code 來用,編譯器會擋我然後說:c 找不到
用肉眼研究一下,也看不懂他的 WithContext(c).Do() 裡面的 c是什麼。
所以這種寫法又失敗了

synr
@synr
if _, err = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage(out), linebot.NewImageMessage(pet.ImageName, pet.ImageName)).Do(); err != nil {

看到這個我才想到我有去 Fork LineBotPetNeedMe 想說看一下怎麼接資料進來,改改看讓他直接 .NewImageMessage 的方式呈現圖片。
但好像會卡到 HTTPS 協定所以會失敗

可能 LINE 一定要 HTTPS 的圖片連結才能顯示吧

Evan Lin
@kkdai
@line5217 流程上不是去 clone heroku 的 git ,而是去 git clone 我的 repo 但是把remote repo 改成 heroko git .請看這段 VCR XD https://www.youtube.com/watch?v=ckij73sIRik
@synr 對... line 圖片一定要 https ,這有點煩,得自己把圖片做 cache... 也就是要遠端把檔案讀成內容,但是透過 heroku 來傳,才能處理 https
@synr 本來想弄個 helper 來處理圖片啦... 最近還沒啥時間弄一下 XDDD
SausageLu
@SausageLu
前輩您好,請問heroku能把code下載下來嗎 ?
我google的教學是在cmd用 heroku git:clone -a myapp,但下載後卻只是個空資料夾,有什麼其他的方法嗎 ? 謝謝
synr
@synr

我遇到了一個新問題,我查了很久 GO 語言相關資料都找不到解法。
所以又來打擾 @kkdai XD

我找不到如何 依照字元樹或字串長度,進行切割字串成字串陣列 的方法

是這樣的我後來應用 LINE BOT 去查詢某些網頁文件內文,但部分文章的回應很長總字數超過 2000 字。
所以 LINE 的 API 會出現 Error log 說無法發送超過 2000 字的內容。

因為這樣,我想說那就在送出前用 GO 想辦法分割字串就好了。
超過多少字會自動切割,然後把切割後的部分都送出去。(反正 LINE API 可以允許一次回五個訊息)
或只送出一個分割後的字串也可以,其他內容請使用者上網站看。

但沒想到這麼難實作XD
我查半天都只有 依照某個分割符號來進行字串分割

不曉得各位前輩有沒有遇過這種問題,後來都怎麼解的 QQ?

Evan Lin
@kkdai
@SausageLu 直接 git clone https://github.com/kkdai/LineBotTemplate ,把你 remote 改到 heroku 然後 push 到 heroku
@synr 我以前都用ptt縮文章功能... http://ppt.cc/text.php
johnnick
@johnnick
hi..大家好
Fixie 取得的靜態 IP ,這個不知有教學嗎?
blob
blob
出現錯誤
synr
@synr

@kkdai 感謝建議!

我最近收到 LINE 他們寄奇怪的信,請問有寫 LINE BOT 的大家都這樣嗎?

Your LINE developers account will expire soon.
In order to extend the expiration date, please click this link.
Your account for logging in to the LINE developers site expires 60 days after the last authentication.

所以,這是 LINE 要所有的開發者,每兩個月回報一次存活狀態的意思囉?

Evan Lin
@kkdai
@johnnick 目前 line 不一定需要 靜態 ip while list 為空就可以
Ymow Wu
@ymow

@johnnick
https://github.com/hanzochang/linebot-sample

@kkdai Evan 您好,請問可是我靜態ip設完之後還是收不到echo,都要再heroku logs印出ip(浮動?)之後再去加入白名單才能收到echo,請問你知道我哪裡錯了嗎

LittleTiger
@Tiger736
Hi Evan
我想請教一些問題 我是自己架設Server沒有透過您的 LineBot ,我遇到的問題是這樣的,就我在Line Bot 開發者網頁中點擊callback url 測試我Server是可以收的到訊息的 但是我用手機去傳送訊息給我的Line Bot是收不到訊息的 請問我是否有少做什麼步驟導致我的Line Bot 沒辦法運作 請Evan大大幫我解答一下 謝謝
Evan Lin
@kkdai
@ymow 建議你把 white list 移除掉,這樣就不需要任何設定靜態 ip . 後期發現 heroku ip 會跑
@Tiger736 就我在Line Bot 開發者網頁中點擊callback url 測試我Server是可以收的到訊息的 這部分怎麼會有訊息?
Daniel Lin
@danpcl
Hi Evan
我想請問有關.yml與Procfile這兩個檔案是怎麼產生的?
自己新增檔案還是有什麼方法會自動產生?
Evan Lin
@kkdai
@danpcl 要自己手動產生喔 :)
Taylor Fang
@taylrj

Hi Evan
有個問題想請教您,拜讀完原文之後發現跟我想做的不太一樣,但一直找不到相關的資料,所以再一次冒昧打擾您。

請問現在的Api可以做到我在網頁上點一個按鈕就打開line app並且連帶開啟一個特定的official account的聊天視窗嗎?我讀完api的document仍然沒有想法。不好意思問了一個跟原文沒有相關的問題。

synr
@synr

問一下有在 Heroku 部屬 Golang LINE BOT 的朋友
最近有發生什麼事情嗎?
我今天半夜突然發現我寫的幾隻 BOT 都不會動作
進去看 log 全都是這種

2017-02-28T23:44:28.584425+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/callback" host={某某APP}.herokuapp.com request_id=~ fwd="IP" dyno= connect= service= status=503 bytes=

是不是代表 Golang 他們升級到 1.8 寫法也要變還是什麼的啊?
我是維持去年 11 月直接學習 @kkdai 的方式使用 BOT
部屬的參數只有改過 Procfileapp.jsonname

synr
@synr
我知道了 好像是 Heroku 出事了
官方回答我半夜那次好像是全面性網站事件:https://status.heroku.com/incidents/1059
Evan Lin
@kkdai
@synr 感謝分享..
@Tayjiun 一般做法直接就是點了網頁上面的按鈕之後,直接加入該 Line 為好友 ,開始聊天.
gltt
@gltt
請問,要怎麼LineBotTemplate 中加入取得群組討論的user id 呢?
xisteray
@xisteray
hello!hello!我剛剛看了evan lin大大的影片教學,做了一個會模仿我打的字, 如果要是能簡單對話要怎麼做?
xisteray
@xisteray
hello!hello!我剛剛看了evan lin大大的影片教學,做了一個會模仿我打的字, 如果要是能簡單對話要怎麼做?其他的都不會……
jerry80409
@jerry80409
@xisteray 要進入 NLP 的領域了嘛?
FYI, 專門講垃圾話的 simsimi api
http://developer.simsimi.com/api
Evan Lin
@kkdai
要對話就得要 NLP,簡單版本的可以看一下 LUIS.ai 網路上應該不少文章可以查
paris2000
@paris2000
大大您好 我想請問您一個功能 就是在一個群組中 如果有新人加入的時候 機器人可以判定的到嗎? 我想寫當有新人加入時 機器人說一句歡迎詞 這樣做得到嗎? 我說的是群組聊天室喔 不是一對一聊天室喔 感謝您 感謝
大大您好 我再補充一下 我使用的機器人環境 是 【正統】的line bot開發環境 這種環境 要怎麼做呢? 感謝 感謝
jerry80409
@jerry80409
@paris2000 我印象中 api 是有支援這部分的,
https://developers.line.me/messaging-api/joining-groups-and-rooms#sending_message
love8877171
@love8877171
請問一下機器人的使用方法...學了好久結果還是研究不太出來...
@kkdai 目前的話一直卡在小黑窗的部分..感覺一直沒辦法可以順利運行機器人
Evan Lin
@kkdai
@love8877171 有參考過影片嗎?
tunglee
@tunglee
請問一下,實做機器人後如何把加入機器人的好友名單隱藏? 例如只顯使xxxLineBot這樣而已,感謝
Evan Lin
@kkdai
@tunglee 這個沒辦法吧?
cyberhsu
@hsuboss_twitter
大家好,我剛進入這群組。想問個不知道是否有人問過的問題
line BOT 能在群組內,自動固定某個日期時間 發一段話嗎? 例如中秋節到了 當天就發出中秋節快樂 之類。
若能的話!該如何做呢?
感恩
Evan Lin
@kkdai
根據目前 Line API ,你沒有付費的話你只能等用戶跟你講話
你可以在中秋節當天他問你的時候,你加上一句.
cyberhsu
@hsuboss_twitter
@kkdai 明白了 感恩提示
Rick
@llovvoll
各位前輩中秋節快樂,想請問一個問題,為何我使用strings.Contains來做判斷回覆,但輸入關鍵詞之後BOT並沒有任何回應,懇請指點提示,謝謝
            case *linebot.TextMessage:
                clientText := strings.ToLower(message.Text)
                if strings.Contains(clientText, "wifi") {
                    if _, err = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage("Today WiFi PassWord is [test20171005]")).Do(); err != nil {
                        log.Print(err)
                    } else {
                        if _, err = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage("You Said 「"+message.Text+"」")).Do(); err != nil {
                            log.Print(err)
                        }
                    }
                }
Evan Lin
@kkdai
會不會你前面有 ReplyMessage 吃掉了 ? bot.Reply 只能一次喔