public async Task <string> SendCodeRequest(string phoneNumber, int requestType = 5) { var completed = false; AuthSendCodeRequest request = null; while (!completed) { request = new AuthSendCodeRequest(phoneNumber, requestType, _apiId, _apiHash, "en"); try { await _sender.Send(request); await _sender.Recieve(request); completed = true; } catch (InvalidOperationException ex) { if (ex.Message.StartsWith("Your phone number registered to") && ex.Data["dcId"] != null) { await ReconnectToDc((int)ex.Data["dcId"]); } else { throw; } } } return(request._phoneCodeHash); }
public async Task <string> SendCodeRequest(string phoneNumber) { var request = new AuthSendCodeRequest(phoneNumber, 5, _apiId, _apiHash, "en"); await _sender.Send(request); await _sender.Recieve(request); return(request._phoneCodeHash); }
//auth.sendCode#768d5f4d phone_number:string sms_type:int api_id:int api_hash:string lang_code:string = auth.SentCode; public async Task <AuthSentCode> SendCode(string phoneNumber, VerificationCodeDeliveryType tokenDestination) { var request = new AuthSendCodeRequest(phoneNumber, (int)tokenDestination, apiId, apiHash, "en"); await SendRpcRequest(request, false); if (request.Error == RpcRequestError.MigrateDataCenter) { if (request.ErrorMessage.StartsWith("PHONE_MIGRATE_") || request.ErrorMessage.StartsWith("NETWORK_MIGRATE_") || request.ErrorMessage.StartsWith("USER_MIGRATE_")) { Debug.WriteLine($"Trying to resolve error: {request.ErrorMessage}."); var dcIdStr = Regex.Match(request.ErrorMessage, @"\d+").Value; var dcId = int.Parse(dcIdStr); // close await CloseProto(); // set new dc options var dcOpt = dcOptions.GetDc(dcId); session.authKey = null; session.serverAddress = dcOpt.ipAddress; session.port = dcOpt.port; try { Debug.WriteLine($"Reconnecting to dc {dcId} - {dcOpt.ipAddress}"); await ReconnectImpl(); } catch (Exception) { StartReconnecting().IgnoreAwait(); throw; } // try one more time request.ResetError(); await SendRpcRequest(request); } } request.ThrowIfHasError(); return(request.sentCode); }