# Définir les variables de configuration #$jsonKeyFile = "d6cd222549da.json" # Modifier le chemin vers votre fichier JSON d'authentification $jsonKeyFile = "24a11fe72e5.json" #$projectId = "abc-prj-np-mdf-001" $projectId = "abc-prj-mdf-001" $Topic = "MindFlow:publish" $subscription = "Alerte:pull" $APIUrl = "https://pubsub.googleapis.com/v1" $subject = "Azure Activity" $Message = "Message Lundi 26 Mai Test en directe à 15:40" $data = $null $responsePublish = $null $responsePull = $null # Activer le compte de service avec le fichier JSON Write-Output "Activation du compte de service..." gcloud auth activate-service-account --key-file $jsonKeyFile # Récupérer le token d'accès Write-Output "Récupération du token d'accès..." $accessToken = gcloud auth print-access-token # Définir l'URL de l'API Pub/Sub pour une opération de pull (récupération de messages) $PublishUrl = "$APIUrl/projects/$projectId/topics/$topic" $PullUrl = "$APIUrl/projects/$projectId/subscriptions/$subscription" # Publier le message sur le topic Pub/Sub #$base64Message = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Message)) $Headers = @{ Authorization = "Bearer $accessToken" "accept" = "application/json" "Content-Type" = "application/json" } # Préparer le corps de la requête (ici, on demande jusqu'à 10 messages) $payloadPublish = @{ messages = @( @{ data = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Message)) attributes = @{ subject = $subject } } ) } | ConvertTo-Json -Depth 10 Write-Output "Utilisation de l'API Pub/Sub..." # Appeler l'API Pub/Sub avec une requête POST $responsePublish = Invoke-RestMethod -Method POST -Uri $PublishUrl -Headers $Headers -Body $payloadPublish # Afficher la réponse Write-Output "Réponse de l'API :" $responsePublish | ConvertTo-Json -Depth 10 # Préparer le corps de la requête (ici, on demande jusqu'à 10 messages) $payloadPull = @{ maxMessages = 10 } | ConvertTo-Json -Depth 10 Write-Output "Interrogation de l'API Pub/Sub..." # Appeler l'API Pub/Sub avec une requête POST $responsePull = Invoke-RestMethod -Method Post -Uri $pullUrl -Headers $headers -Body $payloadPull # -ContentType "application/json" # Afficher la réponse If ($responsePull.receivedMessages) { Write-Host "Message tiré. Réponse : " $responsePull.receivedMessages Foreach ($message in $responsePull.receivedMessages) { $data = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($message.message.data)) Write-Host "Received message: $data" } }