Slack-integratie voor waarschuwingen voor klanten

Adobe Experience Platform staat u toe om een webshvolmacht op ​ Adobe App Builder ​ te gebruiken om ​ Adobe I/O Events ​ in Slack te ontvangen. De proxy handelt de verificatiehandshake van Adobe af en zet de gebeurtenislading om in Slack -berichten, zodat u klantgerichte waarschuwingen kunt ontvangen die aan uw werkruimte worden geleverd.

Vereisten prerequisites

Zorg ervoor dat u het volgende hebt voordat u begint:

  • toegang van Adobe Developer Console: Een rol van Admin of van de Ontwikkelaar van het Systeem in een organisatie met toegelaten App Builder.
  • Node.js en npm: Node.js (Aanbevolen LTS), die npm voor het installeren van Adobe CLI en projectgebiedsdelen omvat. Voor meer informatie, zie ​ Download Node.js ​ en ​ npm Begonnen gids ​.
  • Adobe I/O CLI: Installeer Adobe I/O CLI van uw terminal: npm install -g @adobe/aio-cli.
  • app van Slack met Binnenkomende WebHaak: Een toepassing van Slack in uw werkruimte met toegelaten Binnenkomende Webhaak. Zie ​ een Slack app ​ en ​ Slack Inkomende gids Webhooks ​ creëren om app tot stand te brengen en Web-haak URL (formaat: https://hooks.slack.com/...) te verkrijgen.

Een sjabloonproject instellen templated-project

Als u een sjabloonproject wilt instellen, meldt u zich aan bij de Adobe Developer Console en selecteert u Create project from template op het tabblad Home .

Developer Console die het lusje van het Huis benadrukt en project van malplaatje leidt.

Selecteer de sjabloon App Builder , voer een Project Title in en selecteer Add workspace . Selecteer ten slotte Save .

Developer Console die de Titel van het Project benadrukt, voegt Workspace toe, en sparen.

U ontvangt een bevestiging dat uw project is gemaakt en naar het tabblad Project overview wordt doorgestuurd. Hier kunt u een Project description toevoegen.

het overzicht van het Project lusje dat projectdetails toont.

Project initialiseren initialize-project

Nadat u de proefprojectinstelling hebt ingesteld, initialiseert u het project.

  1. Open de terminal en voer de volgende opdracht in om u aan te melden bij Adobe I/O.

    code language-bash
    aio login
    
  2. Initialiseer de toepassing en geef een naam op.

    code language-bash
    aio app init slack-webhook-proxy
    
  3. Selecteer uw Organization met de pijltoetsen en selecteer vervolgens de Project die u eerder in de Developer Console hebt gemaakt. Selecteer Only Templates Supported By My Org voor de sjablonen die u wilt zoeken.

    Eind die organisatie en de selectie van het Project tonen en slechts Malplaatjes door Mijn Org worden gesteund.

  4. Daarna, druk binnengaan om malplaatjes over te slaan en een standalone toepassing te installeren.

    Eind die organisatie en de selectie van het Project tonen en slechts Malplaatjes door Mijn Org worden gesteund.

  5. Geef de Adobe I/O App-functies op die u voor dit project wilt inschakelen. Gebruik de pijltoetsen om te schuiven en Actions: Deploy Runtime actions te selecteren.

    Eind die de eigenschappen van de Toepassing met Acties tonen: Stel geselecteerde acties Runtime op.

  6. Gebruik de pijltoetsen om te schuiven en selecteer Adobe Experience Platform: Realtime Customer Profile voor het type voorbeeldacties dat u wilt maken.

    Terminal die steekproefactietype met Adobe Experience Platform toont: Geselecteerd Profiel van de Klant Realtime.

  7. Schuif en selecteer Pure HTML/JS voor de gebruikersinterface die u aan de sjabloon wilt toevoegen. De pers gaat binnen om de steekproefacties als gebrek te verlaten, dan gaat opnieuw in om de naam als gebrek te verlaten.

    Eind die UI selectie tonen met Zuivere geselecteerde HTML/JS.

    U ontvangt een bevestiging dat de initialisatie van de app is voltooid.

  8. Navigeer naar de projectmap.

    code language-bash
    cd slack-webhook-proxy
    
  9. Voeg de webactie toe.

    code language-bash
    aio app add action
    
  10. Selecteer Only Action Templates Supported By My Org. Er wordt een lijst met sjablonen weergegeven.

    Terminal die de lijst van actiesjablonen toont.

  11. Selecteer het malplaatje door spacebar te drukken, dan aan @adobe/generator-add-publish-events te navigeren gebruikend uw Omhoog en onderaan pijlen. Tot slot selecteer het malplaatje door Spacebar te drukken en te drukken gaat binnen.

    Terminal die het malplaatje toont.

    Er wordt een bevestiging weergegeven dat npm package @adobe/generator-add-publish-events is geïnstalleerd.

  12. Geef de handeling een naam webhook-proxy .

    Terminal die de actie genoemd webhaak-volmacht toont.

    Er wordt een bevestiging weergegeven dat de sjabloon is geïnstalleerd.

Maak de bestandsacties en implementeer create-file-actions

Voeg de volmachtscode toe, plaats milieuvariabelen, en stel dan op. De actie is dan beschikbaar in de Developer Console voor registratie.

De runtime-proxy implementeren runtime-proxy

NOTE
Handtekeningverificatie en probleemverwerking zijn automatisch wanneer u de registratie van runtimeacties gebruikt.

Navigeer naar de projectmap en open het bestand actions/webhook-proxy/index.js . Verwijder de inhoud en vervang deze door:

const fetch = require("node-fetch");
const { Core } = require("@adobe/aio-sdk");

/**
 * Adobe I/O Events to Slack Runtime Proxy
 *
 * Receives events from Adobe I/O Events and forwards them to Slack.
 * Signature verification and challenge handling are automatic when
 * using Runtime Action registration (non-web action).
 */
async function main(params) {
  const logger = Core.Logger("runtime-proxy", { level: params.LOG_LEVEL || "info" });

  try {
    logger.info(`Event received: ${JSON.stringify(params)}`);

    // Forward to Slack
    return forwardToSlack(params, params.SLACK_WEBHOOK_URL, logger);

  } catch (error) {
    logger.error(`Error: ${error.message}`);
    return { statusCode: 500, body: { error: "Internal server error" } };
  }
}

/**
 * Forwards the event payload to Slack
 */
async function forwardToSlack(payload, webhookUrl, logger) {
  if (!webhookUrl) {
    logger.error("SLACK_WEBHOOK_URL not configured");
    return { statusCode: 500, body: { error: "Server configuration error" } };
  }

  // Extract Adobe headers passed to runtime action
  const headers = {
    "x-adobe-event-code": payload["x-adobe-event-code"],
    "x-adobe-event-id": payload["x-adobe-event-id"],
    "x-adobe-provider": payload["x-adobe-provider"]
  };

  const slackMessage = buildSlackMessage(payload, headers);

  const response = await fetch(webhookUrl, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(slackMessage)
  });

  if (!response.ok) {
    const errorText = await response.text();
    logger.error(`Slack API error: ${response.status} - ${errorText}`);
    return { statusCode: response.status, body: { error: errorText } };
  }

  logger.info("Event forwarded to Slack");
  return { statusCode: 200, body: { success: true } };
}

/**
 * Builds a Slack Block Kit message from the event payload
 */
function buildSlackMessage(payload, headers) {
  // Adobe passes event code as x-adobe-event-code header (available in params for runtime actions)
  const eventType = headers["x-adobe-event-code"] ||
                    payload["x-adobe-event-code"] ||
                    payload.event_code ||
                    payload.type ||
                    payload.event_type ||
                    "Adobe Event";
  const eventId = headers["x-adobe-event-id"] || payload["x-adobe-event-id"] || payload.event_id || payload.id || "N/A";
  const eventData = payload.data || payload.event || payload;

  return {
    blocks: [
      {
        type: "header",
        text: { type: "plain_text", text: `Event: ${eventType}`, emoji: true }
      },
      {
        type: "section",
        fields: formatDataFields(eventData)
      },
      { type: "divider" },
      {
        type: "context",
        elements: [{
          type: "mrkdwn",
          text: `*Event ID:* ${eventId}  |  *Time:* ${new Date().toISOString()}`
        }]
      }
    ]
  };
}

/**
 * Formats event data as Slack mrkdwn fields
 */
function formatDataFields(data, maxFields = 10) {
  if (typeof data !== "object" || data === null) {
    return [{ type: "mrkdwn", text: `*Payload:*\n${String(data)}` }];
  }

  const entries = Object.entries(data);
  if (entries.length === 0) {
    return [{ type: "mrkdwn", text: "_No data provided_" }];
  }

  return entries.slice(0, maxFields).map(([key, value]) => ({
    type: "mrkdwn",
    text: `*${key}:*\n${typeof value === "object" ? `\`\`\`${JSON.stringify(value)}\`\`\`` : value}`
  }));
}

exports.main = main;

De handeling configureren in app.config.yaml app-config

IMPORTANT
De actieconfiguratie in app.config.yaml is essentieel. U moet web: no gebruiken om een niet-webactie te maken die als een Runtime-actie in de Developer Console kan worden geregistreerd.

Navigeer naar de projectmap en open app.config.yaml . Vervang de inhoud door het volgende:

application:
  runtimeManifest:
    packages:
      slack-webhook-proxy:
        license: Apache-2.0
        actions:
          webhook-proxy:
            function: actions/webhook-proxy/index.js
            web: no
            runtime: nodejs:22
            inputs:
              LOG_LEVEL: info
              SLACK_WEBHOOK_URL: $SLACK_WEBHOOK_URL
            annotations:
              require-adobe-auth: false
              final: true

Omgevingsvariabelen environment-variables

IMPORTANT
De toepassing wordt niet uitgevoerd zonder een correct geconfigureerd .env-bestand.

Gebruik omgevingsvariabelen om referenties veilig te beheren. Wijzig het bestand .env in de hoofdmap van het project en voeg het volgende toe:

SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL

De handeling implementeren deploy-action

Zodra de milieuvariabelen worden geplaatst, stel de actie op. Zorg ervoor u in de wortel van uw project (slack-webhook-proxy) bent wanneer u dit bevel in de terminal in werking stelt:

aio app deploy

Een bevestiging dat de plaatsing succesvol was wordt getoond.

IMPORTANT
Je actie wordt uitgevoerd naar Adobe I/O Runtime. De actie is nu beschikbaar in de Developer Console voor registratie.

De handeling registreren met Adobe I/O Events register-events

Wanneer uw handeling is geïmplementeerd, registreert u deze als de bestemming voor Adobe I/O Events.

Open in de Developer Console uw App Builder-project en selecteer vervolgens uw Workspace .

Selecteer Add service en Event op de overzichtspagina van Workspace.

de overzichtspagina die van Workspace de dienst en Gebeurtenis benadrukt.

Selecteer op de pagina Gebeurtenissen toevoegen Experience Platform en Platform notifications en selecteer vervolgens Next .

Add gebeurtenispagina die de berichten van Experience Platform en van het Platform selecteerde.

Selecteer de gebeurtenissen waarvoor u meldingen wilt ontvangen en selecteer vervolgens Next .

Add gebeurtenispagina die de lijst van gebeurtenissen tonen om aan in te tekenen.

Selecteer de verificatiereferentie server-naar-server en selecteer vervolgens Next .

Add gebeurtenispagina die server-aan-server de credentieselectie van de authentificatie tonen.

Voer een Event registration name en een spatie Event registration description in voor de registratie en selecteer vervolgens Next .

voegt gebeurtenispagina toe die de registratienaam van de Gebeurtenis en de beschrijvingsgebieden van de Gebeurtenis tonen.

Selecteer Runtime Action als de leveringsmethode en de slack-webhook-proxy/runtime-proxy actie die u hebt gemaakt en selecteer vervolgens Save configured events .

voegt gebeurtenispagina toe die de leveringsmethode van de Actie Runtime tonen en sparen gevormde gebeurtenissen.

Uw webhaakproxy is nu geconfigureerd. U bent teruggekeerd aan de WebHaakvolmachtspagina. U kunt de volledige stroom van begin tot eind testen door het Send sample event pictogram naast om het even welke gevormde gebeurtenis te selecteren.

de WebHaakvolmachtspagina die gevormde gebeurtenissen en het Send pictogram van de steekproefgebeurtenis tonen.

recommendation-more-help
d82ad670-3501-465b-afee-a91200fdc02c