The Instagram Messaging API ermöglicht es Unternehmen, direkt über die offizielle Graph API von Instagram programmatisch Nachrichten zu senden und zu empfangen. Egal, ob Sie Automatisierungen für den Kundenservice, Benachrichtigungssysteme oder Conversational Commerce-Flows entwickeln, dieser Leitfaden enthält alles, was Sie benötigen, um die Integration durchzuführen. Instagram DM API in Ihre Anwendung.
Die Messaging-Funktionen von Instagram sind Teil des umfassenden Meta Graph API-Ökosystems. Im Gegensatz zu inoffiziellen Methoden, die das Risiko einer Kontosperrung mit sich bringen, bietet die offizielle Instagram Direktnachrichten-API bietet zuverlässige, skalierbare Nachrichtenübermittlung für Geschäftskonten mit angemessener Authentifizierung und Ratenbegrenzung.
Voraussetzungen und Anforderungen
Bevor Sie Instagram-DMs programmgesteuert senden können, müssen Sie mehrere Komponenten einrichten. Die Instagram Messaging API hat spezifische Anforderungen, die sich von anderen sozialen Plattformen unterscheiden.
Anforderungen an Geschäftskonten
Die Instagram Messaging API funktioniert nur mit Instagram Business- oder Creator-Konten, die mit einer Facebook-Seite verbunden sind. Persönliche Konten haben keinen Zugriff auf die Messaging-Endpunkte.
| Requirement | Details |
|---|---|
| Kontotyp | Instagram Business- oder Creator-Konto |
| Facebook-Seite | Muss mit einer Facebook-Seite verknüpft sein. |
| Meta App | Benötigt eine registrierte Meta-Entwickler-App |
| Permissions | instagram_business_manage_messages scope |
| App-Bewertung | Erforderlich für den Produktionszugang über Testbenutzer hinaus |
Eine Meta-Entwickler-App erstellen
- Navigiere zu developers.facebook.com und eine neue App erstellen
- Wählen Sie "Unternehmen" als App-Typ aus.
- Fügen Sie das Produkt "Instagram Graph API" zu Ihrer App hinzu.
- Konfigurieren Sie Ihre OAuth-Umleitungs-URIs.
- Notiere dir deine App-ID und dein App-Geheimnis.
```
// Umgebungsvariablen für die Instagram API-Integration
interface InstagramConfig {
clientId: string; // Meta App-ID
clientSecret: string; // Meta App-Geheimnis
redirectUri: string; // Ihre OAuth-Callback-URL
webhookVerifyToken: string; // Für die Webhook-Überprüfung
}
const config: InstagramConfig = {
clientId: process.env.INSTAGRAM_CLIENT_ID || '',
clientSecret: process.env.INSTAGRAM_CLIENT_SECRET || '',
redirectUri: process.env.INSTAGRAM_REDIRECT_URI || '',
webhookVerifyToken: process.env.INSTAGRAM_WEBHOOK_VERIFY_TOKEN || '',
};
```Hinweis: Speichern Sie alle Anmeldeinformationen in Umgebungsvariablen. Kommen Sie niemals API-Geheimnisse in die Versionskontrolle.
OAuth 2.0-Authentifizierungsfluss
Die Instagram Messaging API verwendet OAuth 2.0 zur Authentifizierung. Sie müssen einen zweistufigen Token-Austauschprozess implementieren, um langfristige Zugriffstoken zu erhalten.
Schritt 1: Autorisierungs-URL generieren
Leiten Sie die Benutzer zur Autorisierungsseite von Instagram mit den erforderlichen Berechtigungen weiter:
function getInstagramAuthUrl(state: string): string {
const scopes = [
'instagram_business_basic',
'instagram_business_content_publish',
'instagram_business_manage_messages', // Erforderlich für DMs
];
const params = new URLSearchParams({
client_id: config.clientId,
redirect_uri: config.redirectUri,
scope: scopes.join(','),
response_type: 'code',
auth_type: 'rerequest', // Erneute Berechtigungsanfrage erzwingen
state: state, // CSRF-Schutz
});
return `https://www.instagram.com/oauth/authorize?${params.toString()}`;
}Schritt 2: Code gegen Tokens eintauschen
Nachdem der Benutzer Ihre App autorisiert hat, leitet Instagram zu Ihrer Callback-URL mit einem Autorisierungscode weiter. Tauschen Sie diesen gegen Zugriffstoken aus:
interface TokenResponse {
accessToken: string;
refreshToken: string;
userId: string;
expiresIn: number;
}
async function exchangeCodeForToken(
code: string
): Promise {
// Schritt 1: Code gegen kurzlebigen Token eintauschen
const tokenResponse = await fetch(
'https://api.instagram.com/oauth/access_token',
{
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
client_id: config.clientId,
client_secret: config.clientSecret,
grant_type: 'authorization_code',
redirect_uri: config.redirectUri,
code: code,
}),
}
);
if (!tokenResponse.ok) {
const error = await tokenResponse.text();
throw new Error(`Token-Austausch fehlgeschlagen: ${error}`);
}
const shortLivedData = await tokenResponse.json();
const shortLivedToken = shortLivedData.access_token;
const userId = shortLivedData.user_id;
// Schritt 2: Gegen langlebigen Token eintauschen (60 Tage)
const longLivedResponse = await fetch(
`https://graph.instagram.com/access_token?` +
`grant_type=ig_exchange_token&` +
`client_secret=${config.clientSecret}&` +
`access_token=${shortLivedToken}`,
{ method: 'GET' }
);
if (!longLivedResponse.ok) {
const error = await longLivedResponse.text();
throw new Error(`Austausch für langlebigen Token fehlgeschlagen: ${error}`);
}
const longLivedData = await longLivedResponse.json();
return {
accessToken: longLivedData.access_token,
refreshToken: longLivedData.access_token,
userId: userId,
expiresIn: longLivedData.expires_in,
};
} Zugriffstoken aktualisieren
Langfristige Tokens laufen nach 60 Tagen ab. Implementiere eine Token-Aktualisierung, um den Zugriff aufrechtzuerhalten:
async function refreshAccessToken(
currentToken: string
): Promise<{ accessToken: string; expiresIn: number }> {
const response = await fetch(
`https://graph.instagram.com/refresh_access_token?` +
`grant_type=ig_refresh_token&` +
`access_token=${currentToken}`,
{ method: 'GET' }
);
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Token-Aktualisierung fehlgeschlagen: ${response.status} ${errorText}`);
}
const data = await response.json();
if (data.error) {
throw new Error(`Fehler bei der Token-Aktualisierung: ${data.error.message}`);
}
if (!data.access_token) {
throw new Error('Die Token-Aktualisierung hat kein access_token zurückgegeben');
}
return {
accessToken: data.access_token,
expiresIn: data.expires_in,
};
}Hinweis: Planen Sie die Aktualisierung von Tokens, bevor sie ablaufen. Eine gute Praxis ist es, Tokens zu aktualisieren, wenn weniger als 7 Tage verbleiben.
Webhooks für Echtzeitnachrichten einrichten
Um eingehende Nachrichten in Echtzeit zu empfangen, müssen Sie Webhooks konfigurieren. Instagram sendet POST-Anfragen an Ihren Endpunkt, wann immer ein Nutzer Ihre Geschäftskonto anschreibt.
Webhook-Verifizierungsendpunkt
Instagram überprüft deine Webhook-URL mit einer GET-Anfrage, bevor sie aktiviert wird:
import { Request, Response } from 'express';
function handleWebhookVerification(
req: Request,
res: Response
): void {
const mode = req.query['hub.mode'];
const token = req.query['hub.verify_token'];
const challenge = req.query['hub.challenge'];
if (mode === 'subscribe' && token === config.webhookVerifyToken) {
console.log('Webhook erfolgreich verifiziert');
res.status(200).send(challenge);
return;
}
console.error('Webhook-Verifizierung fehlgeschlagen');
res.status(403).send('Verifizierung fehlgeschlagen');
}
Nachrichten über die Instagram DM API senden
Die Kernfunktionalität von der Instagram Direktnachrichten-API ist das Versenden von Nachrichten an Nutzer, die Gespräche mit Ihrem Unternehmen begonnen haben.
Textnachrichten senden
To Instagram-DMs programmatisch senden, verwenden Sie den Nachrichten-Endpunkt:
interface SendMessageOptions {
accessToken: string;
igUserId: string; // Ihre Instagram-Business-Konto-ID
recipientId: string; // Die Instagram-ID des Nutzers
text: string;
}
interface SendMessageResponse {
messageId: string;
}
async function sendTextMessage(
options: SendMessageOptions
): Promise<SendMessageResponse> {
const { accessToken, igUserId, recipientId, text } = options;
const response = await fetch(
`https://graph.instagram.com/${igUserId}/messages`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`,
},
body: JSON.stringify({
recipient: {
id: recipientId,
},
message: {
text: text,
},
}),
}
);
if (!response.ok) {
const error = await response.text();
throw new Error(`Nachricht konnte nicht gesendet werden: ${error}`);
}
const data = await response.json();
return { messageId: data.message_id };
}Ratenlimits und bewährte Praktiken
Das Verständnis von Ratenlimits ist entscheidend für den Aufbau zuverlässiger Instagram-Nachrichtenintegrationen.
Übersicht über die Rate Limits
| Limittyp | Threshold | Window |
|---|---|---|
| API-Aufrufe | 200 Aufrufe | Pro Stunde und Benutzer |
| Gesendete Nachrichten | Varies | Basierend auf dem Gesprächsverlauf |
| Webhook-Antworten | Muss innerhalb von 20 Sekunden antworten. | Pro Ereignis |
Beste Praktiken
- Implementiere exponentielles Backoff bei Ratenlimitfehler
- Benutzertokens zwischenspeichern um wiederholte Authentifizierungsanfragen zu vermeiden
- Webhook-Bestätigung verwenden sofort, asynchron verarbeiten
- Überwachen Sie die Token-Ablaufzeit und proaktiv aktualisieren
- Protokolliere alle API-Interaktionen zum Debuggen
Integration von Instagram-Nachrichten mit Late
Der Aufbau und die Pflege von Integrationen mit der Instagram Messaging API erfordern erheblichen Entwicklungsaufwand. Sie müssen OAuth-Workflows, Token-Aktualisierungen, die Verwaltung von Webhooks, die Begrenzung der Anfragen und die Fehlerbehandlung über möglicherweise mehrere soziale Plattformen hinweg berücksichtigen.
Late bietet eine einheitliche API, die die Integration von Instagram-Nachrichten sowie anderen sozialen Plattformen vereinfacht. Anstatt separate Integrationen für jede Plattform zu entwickeln, bietet Late:
- Vereinheitlichte AuthentifizierungEinzelner OAuth-Flow für Instagram, Facebook, Twitter, LinkedIn und mehr
- Automatisches Token-ManagementLate kümmert sich automatisch um das Token-Refresh und die Ablaufverwaltung.
- Webhook-AbstraktionErhalte standardisierte Webhook-Ereignisse über alle Plattformen hinweg.
- Integrierte RatenbegrenzungIntelligente Anforderungswarteschlangen und Wiederholungslogik
- Typensicheres SDKVollständige TypeScript-Unterstützung mit umfassenden Typen
Mit Late wird die Implementierung von Instagram-Nachrichten ganz einfach:
import { Late } from '@getlate/sdk';
const late = new Late({ apiKey: process.env.LATE_API_KEY });
// Sende eine Nachricht über die einheitliche API von Late
await late.messages.send({
accountId: 'instagram-account-id',
recipientId: 'user-id',
content: {
text: 'Hallo von Late!',
},
});
// Verarbeite eingehende Nachrichten mit normalisierten Ereignissen
late.webhooks.on('message.received', (event) => {
console.log('Plattform:', event.platform); // 'instagram'
console.log('Nachricht:', event.content.text);
});Late übernimmt die Komplexität der Instagram Messaging API, damit Sie sich auf die Kernfunktionen Ihrer Anwendung konzentrieren können. Schauen Sie sich die Late-Dokumentation um mit der Integration von Instagram-Nachrichten und anderen sozialen Plattformen zu beginnen.