Closed g07377 closed 1 year ago
使用 docker 的話比較方便,可以嘗試將 vercel 的相關 env 參數去除,再將服務 exposing 給 line verify;
服務要對外使用(讓 line 能夠將使用者的訊息接入的端點)的話需要有相對應的域名或其他服務替代
@g07377
如果你有 VPS 的話,可以使用 Docker 去部署,就不會有超時的問題。
修改相關環境變數,把 APP_API_TIMEOUT 設成長一點,然後把應用程式的端點(Webhook URL)設置到 LINE 平台即可。
文件:
https://memochou1993.github.io/gpt-ai-assistant-docs/deployment.html#使用-docker-容器
範例:
感謝 @kindomLee 補充。
研究了很久弄了老半天都沒辦法用,最多只能讓他會出現已讀,不知道為什麼 ~
@g07377
你的路徑有對嗎?預設是 /webhook
哦
我不是相關領域的人所以不太會用網址,在網路上找到一個用ngrok得到可以連接的網址,但是那個網址後面用/callback的話可以在LINE的網頁驗證成功,然後只會已讀,用/webhook的話是沒辦法驗證會跑出500錯誤,XD
@g07377
也許你要更詳細地解釋你的步驟,我才能幫助你哦。
Ngrok 是用來在本地開發的工具,如果你已經有 VPS 了,只需要暴露端點即可。
我是用google cloud的compute engine 做完docker的步驟之後 已經做到
(借範例圖用一下)
這個有出現 status有顯示up了 然後是要使用google cloud上面給的"外部IP"後面+上設定的port
https://(ip):3000/webhook 這樣直接用到LINE的URL上嗎 還是要從哪邊做"暴露端點"這個動作
主要是這個步驟不會
我直接用那個外部IP去給LINE驗證會顯示
An SSL connection error occurred. Confirm that your webhook URL uses HTTPS and has an SSL/TLS certificate issued by a root certification authority that's widely trusted by most browsers
@g07377
以 Vercel 為範例來說,你可以在你的網址後面打上 /info
來檢查這個端點是否有打通。
https://my-ai-assistant.vercel.app/info
如果沒有,就需要打通來,通常 3000 port 不會任意被打開,可能是 80 port 之類的,這要檢查一下設定。
我的IP連過去是可以顯示 {“currentVersion”:“4.2.0”,“latestVersion”:“4.3.0”} 這一串字的
但是不知道為什麼LINE那邊會顯示那個
你的網址,有 HTTPS 嗎?
我連不到~沒有打通耶
我剛剛可以欸? 真奇怪 所以我是要更改port嗎 設3000好像是因為範例那邊的APPPORT=3000 從.env檔案改嗎@@
對,從 .env
改:
APP_DEBUG=true
APP_PORT=80
然後重建應用程式映像檔
不知道為什麼改完之後變成拒絕連線了
你現在的 docker 狀態是怎麼樣;
app_port
的設定是什麼,有生效嗎(shell 本地測試一下 curl http://localhost:<port>/info
)
本地可以的話再來看外部是否生效 curl http://ip:<port>/info
都可以成功的話後面再轉成 https 去使用,是說上面的設定不是利用 ngrok 的測試所以 https 部分你可能要 survey 一下
curl本地IP是返回Connection refused 不知道為什麼 是google cloud的問題嗎 我有設定防火牆規則把Port全開了...
可以說明一下本地 IP 是指什麼嗎?
你不是直接測 GCP 上面的端點嗎?
GCP上給的有內部IP跟外部IP
我是curl 內部IP 還是端點是指別的東西?
我又研究了一下 然後在VM機器上弄了一個Nginx的設定
現在docker容器port設443,Nginx的Port設80
然後在LINE的驗證那邊以 https://(gcp給的外部IP):80/webhook 做驗證的時後返回的提示是
An SSL connection error occurred. Confirm that your webhook URL uses HTTPS and has an SSL/TLS certificate issued by a root certification authority that's widely trusted by most browsers
似乎不能用Nginx這個方式暴露端點? 請問有建議甚麼方式來暴露端點嗎 直接拿gcp的外部IP連不管怎樣都連不上@@
Docker 的 port 要設 80 喔!但是 443 和 80 都要開放。
然後端點指的是外部 IP 吧!
你可以用 Nginx 實驗 80 port 有沒有打通,但實際在跑專案的時候,不需要再包一層 Nginx 了,因為容器直接就是暴露 80 port。
從錯誤訊息來看,可能有通,但是 HTTPS 憑證有問題。
好不容易 VMware 裝 Ubuntu ,再裝 Docker ,也搞出本地測試 IP:3000 顯示OK了 把3000 port 對應到到分享器也通了...
但因為網址沒有 https 只有 http 而以....... 就不知道怎麼辦了, line Webhook URL 無法添加.........
申請個免費域名 + NginxProxyManager, 可以解決
謝謝分享,我再來研究看看~~
我是用 Linode + Caddy 的方式部署,每個月是 5 塊美金。
大家可以參考看看。
不好意思, 我嘗試用docker去部署,直接連IP:port 跟用https反向代理都會顯示OK,網址帶info 會回傳{"currentVersion":"4.4.0","latestVersion":"4.4.0"},現在卡在/webhook都會顯示Cannot GET /webhook,請問是我哪邊沒設定正確嗎?
不好意思, 我嘗試用docker去部署,直接連IP:port 跟用https反向代理都會顯示OK,網址帶info 會回傳{"currentVersion":"4.4.0","latestVersion":"4.4.0"},現在卡在/webhook都會顯示Cannot GET /webhook,請問是我哪邊沒設定正確嗎?
/webhook 是給 line 打的端點,直接不帶參數去 call 是會出現 Cannot GET /webhook
沒錯
感謝回復,原來是我誤會了 但我現在設定URL到Messaging API上的URL上,Verify一直不通過,現在搞不清楚是我變數設定有問題,還是我反向代理有問題。
Verify 按下去,顯示什麼?
The webhook returned an HTTP status code other than 200.(500 Internal Server Error)
@tsu299
請查看容器裡的 logs 喔!
docker compose logs
貼一下!我也好奇!
docker compose logs
抱歉現在才看到回覆,我查看了log,錯誤內容如下:
gpt-ai-assistant | error trying to parse config.timeout
to int
@tsu299
你的 .env
裡面,關於 timeout 的環境變數的值,有沒有正確!?
@tsu299
你的
.env
裡面,關於 timeout 的環境變數的值,有沒有正確!?
APP_API_TIMEOUT 這調是設置 9000 其他TIMEOUT變數沒有特別設定值
@tsu299
把 APP_API_TIMEOUT
先設回空值看看?
@tsu299
把
APP_API_TIMEOUT
先設回空值看看?
改回空值跟將其他TIMEOUT補上值之後錯誤訊息都還是一樣。
直接不要設定該參數呢
我試過整個env 只設定這幾條但狀況一樣 APP_DEBUG=true APP_PORT=3000
VERCEL_PROJECT_NAME=gpt-ai-assistant
VERCEL_ACCESS_TOKEN=
OPENAI_API_KEY=
LINE_CHANNEL_ACCESS_TOKEN=
不對阿,你不用 vercel 為什麼還放相關的兩個參數,我之前測試的時候,如果填寫完整就變成有使用到 vercel, 不填寫完整會一直重啟, 後面是將這兩個參數去除後正常,你可以試試看
我在設定的時候也很納悶... 但因為文件上用DOCKER部屬的教學上有寫到,所以我才照著填,我刪掉試試
@kindomLee
阿,不過因為 timeout 預設是 9000
,所以如果有用 VPS 的話,要調大一點,例如 60000
之類的。
只是我目前不曉得這個錯誤訊息是怎樣子。
這邊上了一個 4.4.1
版,使用新的 model 後,原來是我忘了幫它加上 max_tokens
的參數。
所以它如果回很長的訊息回來時,就很容易超時。
雖然前陣子是真的變慢了,不過補上這個參數後,超時的情況會改善一點。
@tsu299
如果我把 Axios 的 timeout 改成字串,就出現那條錯誤訊息了,所以我懷疑是環境變數有字串混進去了。
我更新成4.4.1後重新部屬一次就好了,感謝各位的耐心回答
我更新成4.4.1後重新部屬一次就好了,感謝各位的耐心回答
@tsu299 你好,方便的話手把手指導一下如何本地端開啟嗎? 我這邊環境是ubuntu的本地主機
你好,你想要從哪一個步驟開始教起? 或是可以加我的LINE,ID跟我githud帳號一樣
我照著https://memochou1993.github.io/gpt-ai-assistant-docs/development.html#使用代理伺服器 到了這邊他會卡在這邊不動
@jimmy8399
卡住是正常的,代表伺服器啟動了!
@g07377
有任何進展嗎?
不知道是不是GCP的問題,我不管怎麼弄都會拒絕連線之類的,暫時放棄了~~謝謝你的教學QQ
@g07377
有機會先用 GCP 架出一個 Nginx 網頁看看吧,如果 80 port 可以打通,那這個專案應該就沒問題了。
此票先關閉,很棒的討論。
現在新版本,vercel很容易出現504超時的問題
查看常見問題裡寫的解決方法中有一個"使用虛擬專用伺服器進行部署"
於是找了一個免費的VPS
然後照著文件頁的#部署 這個說明做了並且成功運行之後似乎沒有解決504問題,不知道是不是我的操作有問題
不知道能否提供針對解決現在容易出現504超時的問題
如果不想付費訂閱vercel而是用虛擬專用伺服器的話如何操作的稍加詳細一點的說明