<commit_before># Aliyun::Sms::Ruby::Sdk

Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/aliyun/sms/ruby/sdk`. To experiment with that code, run `bin/console` for an interactive prompt.

TODO: Delete this and the text above, and describe your gem

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'aliyun-sms-ruby-sdk'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install aliyun-sms-ruby-sdk

## Usage

TODO: Write usage instructions here

## Development<commit_msg>add doc to use this gem<commit_after># 阿里云短信服务
这里借鉴了 [aliyun-sms](https://github.com/VICTOR-LUO-F/aliyun-sms) 主要的签名算法。
[官网短信发送说明](https://help.aliyun.com/document_detail/44362.html?spm=5176.doc44364.2.1.A5oJFn)
这里没有依赖第三方 Gem,适合低版本的ruby使用。

## 安装
在应用的 Gemfile 文件中添加 Ruby Gems 安装源:

```ruby
gem 'aliyun-sms-ruby-sdk'
```

应用的根目录下运行:

    $ bundle

或者直接在ruby下安装

    $ gem install aliyun-sms-ruby-sdk

## 使用
### 1. 创建配置文件在 `config/initializers/aliyun-sms-ruby-sdk.rb`

```ruby
Aliyun::Sms::PhoneCode.configure do |config|
      config.access_key_secret = ACCESS_KEY_SECRET # 阿里云接入密钥，在阿里云控制台申请
      config.access_key_id = ACCESS_KEY_ID         # 阿里云接入 ID, 
      config.sign_name = SIGN_NAME                 # 短信签名，在阿里云申请开通短信服务时申请获取在阿里云控制台申请
      
      #config.action = 'SingleSendSms'              # 默认设置，如果没有特殊需要，可以不改
      #config.format = 'JSON'                       # 短信推送返回信息格式，可以填写 'JSON'或者'XML'
      #config.region_id = 'cn-hangzhou'             # 默认设置，如果没有特殊需要，可以不改      
      
      #config.signature_method = 'HMAC-SHA1'        # 加密算法，默认设置，不用修改
      #config.signature_version = '1.0'             # 签名版本，默认设置，不用修改
      #config.sms_version = '2016-09-27'            # 服务版本，默认设置，不用修改
  end

```

### 第二步调用方法发送短信

```ruby
$ Aliyun::Sms::PhoneCode.send(template_code, phone_number, param_string)
```

参数说明：
1. phone_number: 接收短信的手机号，必须为字符型，例如 '1234567890'；
2. template_code: 短信模版代码，必须为字符型，申请开通短信服务后，由阿里云提供，例如 'SMS_12345678'；
3. para_string: 请求字符串，向短信模版提供参数，必须为字符型的json格式，例如 '{"customer": "username"}'。

在程序中可以先用 HASH 组织 param_string 内容，再使用 to_json 方法转换为 json 格式字符串，例如：

```ruby
phone_number = '1234567890'
template_code = 'SMS_12345678'
param_string = {'customer' => 'username'}.to_json
Aliyun::Sms::PhoneCode.send(template_code, phone_number, param_string)
```

## 测试
在根目录下

```ruby
 ruby -Ilib:test test/aliyun/sms/test_phone_code.rb
```
## Development
{'fraction_non_alphanumeric': 0.12375249500998003, 'fraction_numerical': 0.02714570858283433, 'mean_word_length': 3.657992565055762, 'pattern_counts': {'":': 1, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5944798', 'n_tokens_mistral': 1223, 'n_tokens_neox': 1234, 'n_words': 200}