mirror of https://github.com/abpframework/abp.git
committed by
GitHub
1 changed files with 120 additions and 2 deletions
@ -1,3 +1,121 @@ |
|||||
# Emailing |
# SMS Sending |
||||
|
|
||||
TODO! |
The ABP Framework provides an abstraction to sending SMS. Having such an abstraction has some benefits; |
||||
|
|
||||
|
- You can **easily integrate** to your favorite SMS sender with a few lines of configuration. |
||||
|
- You can then **easily change** your SMS sender without changing your application code. |
||||
|
- If you want to create **reusable application modules**, you don't need to make assumption about how the SMS are sent. |
||||
|
|
||||
|
## Installation |
||||
|
|
||||
|
It is suggested to use the [ABP CLI](CLI.md) to install this package. |
||||
|
|
||||
|
### Using the ABP CLI |
||||
|
|
||||
|
Open a command line window in the folder of the project (.csproj file) and type the following command: |
||||
|
|
||||
|
```bash |
||||
|
abp add-package Volo.Abp.Sms |
||||
|
``` |
||||
|
|
||||
|
### Manual Installation |
||||
|
|
||||
|
If you want to manually install; |
||||
|
|
||||
|
1. Add the [Volo.Abp.Sms](https://www.nuget.org/packages/Volo.Abp.Sms) NuGet package to your project: |
||||
|
|
||||
|
``` |
||||
|
Install-Package Volo.Abp.Sms |
||||
|
``` |
||||
|
|
||||
|
2. Add the `AbpSmsModule` to the dependency list of your module: |
||||
|
|
||||
|
```csharp |
||||
|
[DependsOn( |
||||
|
//...other dependencies |
||||
|
typeof(AbpSmsModule) //Add the new module dependency |
||||
|
)] |
||||
|
public class YourModule : AbpModule |
||||
|
{ |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## Sending SMS |
||||
|
|
||||
|
[Inject](Dependency-Injection.md) the `ISmsSender` into any service and use the `SendAsync` method to send a SMS. |
||||
|
|
||||
|
**Example** |
||||
|
|
||||
|
```csharp |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
using Volo.Abp.Sms; |
||||
|
|
||||
|
namespace MyProject |
||||
|
{ |
||||
|
public class MyService : ITransientDependency |
||||
|
{ |
||||
|
private readonly ISmsSender _smsSender; |
||||
|
|
||||
|
public MyService(ISmsSender smsSender) |
||||
|
{ |
||||
|
_smsSender = smsSender; |
||||
|
} |
||||
|
|
||||
|
public async Task DoItAsync() |
||||
|
{ |
||||
|
await _smsSender.SendAsync( |
||||
|
"+012345678901", // target phone number |
||||
|
"This is test sms..." // SMS text |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
The given `SendAsync` method in the example is an extension method to send sms with primitive paremeters, it basicly creates `SmsMessage` object and pass it. You can also use the default `SendAsync` method which requires `SmsMessage` object. |
||||
|
|
||||
|
> `ISmsSender` is the suggested way to send SMS, since it makes your code provider independent. |
||||
|
|
||||
|
## SmsMessage |
||||
|
|
||||
|
In addition to use primitive parameters, you can pass a `SmsMessage` object to the `SendAsync` method. |
||||
|
|
||||
|
- `PhoneNumber` (string): Target phone number to send sms. |
||||
|
- `Text` (string): SMS Text |
||||
|
- `Properties` (Dictionary<string, string>): string key-value pair to handle different usages by senders. |
||||
|
|
||||
|
## NullSmsSender |
||||
|
|
||||
|
`NullSmsSender` is a built-in class that implements the `ISmsSender`, but writes sms contents to the [standard log system](Logging.md), rathen than actually sending the SMSs. |
||||
|
|
||||
|
This class can be useful especially in development time where you generally don't want to send real sms. |
||||
|
`NullSmsSender` will try to register itself automatically if there is no other registrated sms sender. |
||||
|
|
||||
|
## Creating a custom SMS sender |
||||
|
|
||||
|
You can easily create your custom provider by creating a class that implements the `ISmsSender` interface. |
||||
|
|
||||
|
```csharp |
||||
|
using System.IO; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Sms; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace AbpDemo |
||||
|
{ |
||||
|
public class MyCustomSmsSender : ISmsSender, ITransientDependency |
||||
|
{ |
||||
|
public async Task SendAsync(SmsMessage smsMessage) |
||||
|
{ |
||||
|
// Send sms |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
That's all. Now you can send SMS by using `MyCustomSmsSender` in your application. |
||||
|
|
||||
|
## See also |
||||
|
|
||||
|
- [Twilio SMS Sender](https://docs.abp.io/en/commercial/latest/modules/twilio-sms) with [ABP Commercial](https://commercial.abp.io/). |
||||
|
|||||
Loading…
Reference in new issue