#pragma once #include #include #include #include #include #include #include #include "logger.hpp" namespace bite_im{ class DMSClient { public: using ptr = std::shared_ptr; DMSClient(const std::string &access_key_id, const std::string &access_key_secret) { AlibabaCloud::InitializeSdk(); AlibabaCloud::ClientConfiguration configuration( "cn-chengdu" ); configuration.setConnectTimeout(1500); configuration.setReadTimeout(4000); AlibabaCloud::Credentials credential(access_key_id, access_key_secret); _client = std::make_unique(credential, configuration); } ~DMSClient() { AlibabaCloud::ShutdownSdk(); } bool send(const std::string &phone, const std::string &code) { AlibabaCloud::CommonRequest request(AlibabaCloud::CommonRequest::RequestPattern::RpcPattern); request.setHttpMethod(AlibabaCloud::HttpRequest::Method::Post); request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25"); request.setQueryParameter("Action", "SendSms"); request.setQueryParameter("SignName", "bitejiuyeke"); request.setQueryParameter("TemplateCode", "SMS_465324787"); request.setQueryParameter("PhoneNumbers", phone); std::string param_code = "{\"code\":\"" + code + "\"}"; request.setQueryParameter("TemplateParam", param_code); auto response = _client->commonResponse(request); if (!response.isSuccess()) { LOG_ERROR("短信验证码请求失败:{}", response.error().errorMessage()); return false; } return true; } private: std::unique_ptr _client; }; }