常見問題
接入時最常被問到的問題,按主題分組。找不到答案時,帶上出錯請求的 request_id 聯絡我們。
接入與鑑權
App Token 需要每次呼叫前都換取嗎?
不需要。App Token 預設 7 天有效(可在執行策略中修改 app_token_ttl_seconds),請在服務端快取並複用,到期前再換取新的。頻繁換取會佔用呼叫額度,每個 IP 每分鐘最多換取 120 次。見鑑權與 App Token。
呼叫介面返回 401 unauthenticated 怎麼辦?
App Token 已經過期或失效,重新換取一次後重試即可。如果響應中的 details.reason 為 app_deleted 或 tenant_closed,說明應用已刪除或租戶已登出,不要再重試。
返回 403 ip_not_allowed 是什麼原因?
應用設定了 IP 白名單,而請求的來源 IP 不在其中。請在控制檯把業務服務端的出口 IP 加入白名單,見服務端憑據與 IP 白名單。
可以在網頁或 App 中直接呼叫服務端 REST API 嗎?
不可以。App Token 擁有整個應用的管理許可權,洩露後任何人都能以任意使用者的身份發訊息。服務端 REST API 不支援瀏覽器跨域呼叫,客戶端請使用使用者自己的 User Token。
返回 429 rate_limited 怎麼辦?
請求超出了應用的呼叫額度。請按響應頭 Retry-After 給出的秒數等待後重試,並檢查是否有不必要的重複呼叫(如每次都換取 App Token)。業務量確實較大時,請聯絡我們提高配額,見限流與應用狀態。
如何區分測試環境和生產環境?
為兩個環境分別建立應用,各自有獨立的 AppKey、憑據和資料。測試應用可以開放客戶端自注冊,方便除錯。
使用者與登入
我們已經有自己的賬號體系,使用者如何登入 IM?
推薦的做法:使用者註冊時,你的服務端呼叫介面建立一個同名的 IM 使用者(不設定密碼);使用者需要登入 IM 時,你的服務端在驗證了使用者身份後為他簽發一次性登入憑證,客戶端用憑證登入。這樣 IM 不儲存使用者的密碼,見登入與登入裝置。
使用者名稱有什麼要求?可以用手機號嗎?
使用者名稱在應用內唯一、不區分大小寫,規則見使用者管理。建議使用你係統中不會變化的使用者 ID,而不是手機號、郵箱等可能變化或屬於個人資訊的值。
一個使用者可以同時在幾臺裝置上登入?
預設最多 4 臺,可以在執行策略中調整,並設定超出時是拒絕新登入還是踢掉最早登入的裝置。還可以按平臺分組(如手機、電腦各一臺)分別限制,見多端登入。
訊息
不是好友能互相發訊息嗎?
預設可以。如果你的業務要求只有好友之間才能單聊,在執行策略中開啟“單聊要求雙方為好友”(friend_check_enabled)。群聊不受影響。
訊息會儲存多久?
預設儲存 90 天,可以在執行策略中修改 message_retention_days(1 到 3650 天)。調小後,超出保留期的訊息會被刪除且不能恢復。
服務端能撤回任意一條訊息嗎?
可以。使用者自己撤回訊息受撤回時限限制(預設 2 分鐘),服務端呼叫撤回介面不受這個限制。見撤回、編輯與置頂。
如何匯出聊天記錄?
服務端可以按訊息 ID 的順序逐頁匯出應用內的全部訊息(適合增量同步到你自己的儲存),也可以按時間段查詢某個會話的歷史訊息或某個使用者發出的訊息,見查詢與匯出訊息和會話與歷史訊息。
如何傳送圖片、語音、影片和檔案?
先把檔案上傳到 IM 服務,得到檔案地址,再把地址寫進對應型別訊息的 body 中傳送。上傳分三步:建立上傳、把內容直接上傳到物件儲存、完成上傳,見上傳檔案和訊息格式。
訊息中的圖片和檔案會儲存多久?
附件預設從上傳時起保留 30 天,可以在執行策略中修改 attachment_retention_days。到期後檔案被刪除,訊息本身仍然保留,換取下載地址時返回 file_expired。頭像在使用期間一直保留;群檔案預設在群存在期間一直保留。見檔案概述。
拿到檔案地址的人都能下載檔案嗎?
不能。訊息中的檔案地址本身不能下載,只有本應用登入的使用者或你的服務端能用它換取短期有效的下載地址;群檔案只有群成員能換取。頭像是例外,它的公開地址可以直接訪問。
重試傳送訊息會不會重複?
傳送時帶上你生成的 client_msg_id:同一傳送者在同一會話中用相同的 client_msg_id 重試,返回第一次寫入的訊息,不會產生重複的訊息,見傳送訊息。
回撥
如何把聊天記錄同步到自己的系統?
在控制檯為應用配置事件回撥,訂閱訊息相關的事件,IM 服務會在訊息發出後把它推送到你的服務端;也可以用服務端介面逐頁匯出訊息。見回撥概述和事件回撥。
能在使用者發訊息、加好友之前做自己的業務校驗嗎?
可以。配置同步回撥後,IM 服務在使用者發訊息、加好友、入群等操作之前詢問你的服務端,你可以放行、拒絕或改寫內容。見同步回撥。
如何確認回撥請求來自 IM 服務?
每個回撥請求都帶簽名,請按驗證回撥請求校驗簽名和時間戳,不透過的請求直接拒絕。
聊天室、音影片與推送
聊天室和群組有什麼區別?
群組有固定的成員,成員離線時訊息會儲存下來,上線後補齊;聊天室沒有固定成員,只有正在聊天室中的使用者收到訊息,不儲存離線訊息,適合直播間這類人數多、流動快的場景。見聊天室管理。
音視訊通話需要另外接入音影片服務嗎?
不需要。呼叫、振鈴、接聽等信令和通話記錄都由 IM 服務處理,音影片資料由平臺提供的媒體服務承載,開通後即可使用。見音視訊通話。
使用者收不到離線推送怎麼辦?
依次檢查:控制檯中是否配置了對應通道的推送憑據,使用者的裝置是否登記了推送令牌,使用者是否開啟了免打擾或會話免打擾,以及控制檯推送統計中的失敗原因。見離線推送和排查收不到推送。
計費
如何計費?
費用分兩塊,都按應用分別記賬:
- 套餐:每個應用訂閱一個套餐,套餐決定使用者數、儲存等額度;賬單按租戶彙總展示,但每個應用的套餐餘額只能付這個應用的費用。見套餐與賬單。
- 音影片:通話和獨立 RTC 頻道使用這個應用單獨的音影片時長餘額,先充值後使用。預設價格為 7 元 / 1000 標準分鐘(以控制檯頁面為準);影片按實際接收的解析度折算成標準分鐘,每個應用每月合計後取整一次。見音影片計費。
額度用完了或欠費會怎樣?
- 套餐額度用滿(如使用者數、儲存):對應的新增操作被拒絕,已有的資料和功能不受影響。
- 音影片餘額為零或負數:不能再發起或加入通話和頻道,提示
payment_required;正在進行的通話不會被結束通話,之後的用量照常結算,所以餘額可能變成負數,充值後先抵消負數部分。 - 歷史租戶賬單逾期:仍按原來的規則處理,見逾期與欠費。
其他
有客戶端 SDK 嗎?
有,覆蓋網頁(含 React、Vue)、Flutter(Android、iOS、桌面)、Android 原生、Tauri 桌面、微信小程式、UniApp 和 Go。iOS 原生(Swift)還在規劃中,iOS 現在請用 Flutter SDK。按平臺選擇見客戶端 SDK,版本和已知限制見版本與支援狀態。
刪除應用後還能恢復嗎?
不能。應用刪除後,它的全部使用者、好友、群組和訊息都會被清除,app_name 也不能再次使用。如果只是暫時不想提供服務,請停用應用,停用後可以隨時恢復。
如何聯絡技術支援?
請把出錯請求的 X-Request-ID(響應頭或錯誤響應中的 request_id)、請求時間和應用的 AppKey 傳送給我們,見關於我們。
獨立 RTC 頻道
不建群也能多人音影片嗎?
可以,用獨立 RTC 頻道。你的服務端用自己的 channel_id 建立頻道,登入了的使用者直接加入(開放頻道)或憑服務端簽發的一次性票據加入(票據頻道)。頻道不會建立 IM 群,也不產生呼叫邀請和通話記錄。
頻道 ID 是否就能授權加入?
不能。開放頻道要求使用者登入了本應用並透過准入檢查;票據頻道還要求服務端為這個使用者簽發的有效票據。只知道頻道 ID 或媒體房間名,繞不過這些檢查。
能同時參與通話和頻道嗎?
不能。同一個使用者同時只能在一個通話或頻道中,單聊通話、群通話和頻道共用這一個名額。剛離開時媒體資源可能還在清理,這期間加入會提示忙;稍等後用同一個 client_session_id 重試,不要每次換一個新的。
小程式和 UniApp 都支援頻道音影片嗎?
UniApp 支援:H5 有專用入口,可以用 H5 Demo 驗證;App(Android / iOS)透過 UTS 原生橋接支援,用 App Demo 在真機驗證。微信小程式目前只能查詢頻道,不能加入音影片,channels.supported 為 false。各平臺的情況見獨立 RTC 頻道支援。
加入後會自動開啟麥克風、系統來電介面或後臺服務嗎?
不會。加入後預設不採集麥克風和攝像頭,使用者操作後才開啟;頻道也不會彈出 CallKit 等系統來電介面。Android、Flutter 要在後臺持續採集,需要你自己另外實現。
應用餘額與語言
已提交充值申請,為什麼還不能通話?
建立充值訂單不會增加餘額,付款到賬後才會:微信支付在支付結果核驗成功後自動到賬;對公轉賬要等財務核對銀行流水、確認到賬。先在“音影片計費”的“充值訂單”裡看訂單狀態,並確認充的是這個應用的音影片餘額。
餘額為正後,還要應用的音影片策略、頻道開關、併發額度和媒體服務都允許才能通話;充值不會自動開啟這些開關。見充值和餘額不足與無法入會。
通話統計分鐘與扣費分鐘為什麼不同?
兩者演算法不同:通話統計裡的分鐘數按每人每次通話取整,頻道報表按應用每天彙總;扣費則先按實際接收的解析度折算成標準時長,再按應用每月合計後取整一次。所以兩邊的數字不能相加,也不能拿統計分鐘乘單價推算扣費。見新舊資料如何對照。
英語介面會改變幣種、時區或使用者訊息嗎?
不會。語言只改變介面顯示,幣種(人民幣)、計費統計的時區、錯誤碼和使用者發的內容都不變。郵件和簡訊通知需要對應語言的模板,英語簡訊還要供應商稽核透過才能傳送,見語言與本地化。
