mirror of https://github.com/abpframework/abp
Merge pull request #8510 from abpframework/cotur/docs/sms-sending
SMS-Sending documentation is preparedpull/8529/head
commit
0e2635697c
@ -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