Interface IWebhookHandler
- Namespace
- SESARWebHook.Core.Interfaces
Interface simplifiée pour les clients qui veulent implémenter leur propre webhook handler.
RESPONSABILITÉS :
- Vous recevez le manifest SESAR déchiffré
- Vous utilisez nos helpers d'authentification (OAuth2, API Key, etc.)
- Vous faites vos propres appels API
- Vous implémentez VOTRE logique d'affaire
CE QUE NOUS GÉRONS :
- Réception du webhook SESAR
- Déchiffrement du manifest
- Helpers d'authentification (OAuth2ClientCredentialsHelper, OAuth2RefreshTokenHelper, ApiKeyHelper)
CE QUE VOUS GÉREZ :
- Transformation des données vers votre format
- Appels HTTP vers votre système
- Logique d'affaire spécifique
EXEMPLE :
public class MyHandler : WebhookHandlerBase
{
private OAuth2ClientCredentialsHelper _auth;
public override string HandlerId => "my-handler";
public override string DisplayName => "My Handler";
public override void Initialize(Dictionary<string, string> settings)
{
base.Initialize(settings);
_auth = OAuth2ClientCredentialsHelper.ForDynamics365(
GetRequiredSetting("TenantId"),
GetRequiredSetting("ClientId"),
GetRequiredSetting("ClientSecret"),
GetRequiredSetting("ResourceUrl")
);
}
public override async Task<IntegrationResult> ProcessAsync(
StoreManifest manifest,
WebhookContext context)
{
// 1. Extraire les données
var email = GetSenderEmail(manifest);
var subject = GetSubject(manifest);
// 2. Obtenir le token (avec notre helper)
var token = await _auth.GetAccessTokenAsync();
// 3. Faire votre appel API
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var response = await client.PostAsync("https://your-api.com/endpoint",
new StringContent(JsonConvert.SerializeObject(new {
email, subject
})));
if (response.IsSuccessStatusCode)
return IntegrationResult.Ok("Success");
else
return IntegrationResult.Fail("Error", await response.Content.ReadAsStringAsync());
}
}
}
public interface IWebhookHandler
Properties
Description
Description de ce que fait ce handler
string Description { get; }
Property Value
DisplayName
Nom affiché dans les logs et interfaces d'admin
string DisplayName { get; }
Property Value
HandlerId
Identifiant unique de ce handler (ex: "my-company-crm") Utilisé dans la configuration et le routage.
string HandlerId { get; }
Property Value
Version
Version du handler
string Version { get; }
Property Value
Methods
Initialize(Dictionary<string, string>)
Initialise le handler avec les paramètres de configuration. Appelé une fois au chargement.
C'est ici que vous devez créer vos helpers d'authentification.
void Initialize(Dictionary<string, string> settings)
Parameters
settingsDictionary<string, string>Paramètres fusionnés de Web.config et connectors.secrets.json
ProcessAsync(StoreManifest, WebhookContext)
Traite un manifest SESAR et fait les actions nécessaires.
C'est la méthode principale. Vous recevez le manifest déchiffré et vous faites ce que vous voulez : appels API, transformation, etc.
Task<IntegrationResult> ProcessAsync(StoreManifest manifest, WebhookContext context)
Parameters
manifestStoreManifestLe manifest SESAR déchiffré
contextWebhookContextContexte de la requête webhook
Returns
- Task<IntegrationResult>
Résultat de l'intégration
TestConnectionAsync()
Teste la connexion aux systèmes externes.
Task<bool> TestConnectionAsync()
Returns
ValidateConfigurationAsync(Dictionary<string, string>)
Valide que la configuration est correcte. Appelé au démarrage et lors des tests.
Task<bool> ValidateConfigurationAsync(Dictionary<string, string> settings)
Parameters
settingsDictionary<string, string>