'how to costum meesenjer4j single api for multiple messenger bot
I try to develop an API server with spring boot for multiple Facebook apps or an app with multiple pages like botFule or flowXo
I tried messenger4j. it works for a unique app and unique webhook
@Bean
public Messenger messenger(@Value("${messenger4j.pageAccessToken}") String pageAccessToken,
@Value("${messenger4j.appSecret}") final String appSecret,
@Value("${messenger4j.verifyToken}") final String verifyToken) {
return Messenger.create(pageAccessToken, appSecret, verifyToken);
}
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<String> verifyWebhook(@RequestParam(MODE_REQUEST_PARAM_NAME) final String mode,
@RequestParam(CHALLENGE_REQUEST_PARAM_NAME) final String challenge,
@RequestParam(VERIFY_TOKEN_REQUEST_PARAM_NAME) final String verifyToken
) {
logger.debug("Received Webhook verification request - mode: {} | verifyToken: {} | challenge: {}", mode, verifyToken, challenge);
try {
logger.debug("********");
this.messenger.verifyWebhook(mode, verifyToken);
return ResponseEntity.ok(challenge);
} catch (MessengerVerificationException e) {
logger.warn("Webhook verification failed: {}", e.getMessage());
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(e.getMessage());
}
}
/**
* Callback endpoint responsible for processing the inbound messages and events.
*/
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<Void> handleCallback(@RequestBody final String payload,
@RequestHeader(SIGNATURE_HEADER_NAME) final String signature
// ,@RequestParam(VERIFY_TOKEN_REQUEST_PARAM_NAME) final String verifyToken
) {
try {
this.messenger.onReceiveEvents(payload, of(signature), event ->
{event.recipientId();
if (event.isTextMessageEvent()) {
handleTextMessageEvent(event.asTextMessageEvent());
}}
Now how can I switch between pages or apps I tried a basic way like that and had error signature verification
String pageId= j.getAsJsonArray().get(0).getAsJsonObject().get("id").getAsString();
logger.info("pageId {}", j.getAsJsonArray().get(0).getAsJsonObject().get("id"));
if (pageId=="109149861733036" ) {
messenger = Messenger.create("tok1", appSecret1, verifyToken1);
}else
messenger = Messenger.create("tok2", appSecret1, verifyToken1);
Processing of callback payload failed: pageId"101389035856068" Processing of callback payload failed: Signature verification failed. Provided signature does not match calculated signature.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
