안녕하세요 카카오톡 알림이 왔을 때 음성으로 답장하는 앱을 개발중인데요, 메세지 api로 등록된 친구 목록을 가져와서 메세지를 보내는 건 성공하였습니다.
근데 알림이 왔을 때 등록된 이름이 상대방이 카카오톡 가입시 등록한 이름으로 되어있지 않는 경우에는 friend.profileNickName() 과 알림에 뜨는 이름이 달라서 상대방한테 api로 메세지를 보내는 것이 불가능하더라고요…
혹시 이문제를 해결할 수 있는 방안이 있을까요?
코드는 다음과 같이 짰습니다.
override fun onNotificationPosted(sbn: StatusBarNotification) {
val notification: Notification = sbn.notification
val extras: Bundle = notification.extras
val title= extras.getString(Notification.EXTRA_TITLE)
val text = extras.getCharSequence(Notification.EXTRA_TEXT)
val subText = extras.getCharSequence(Notification.EXTRA_SUB_TEXT)
if (title != null) {
receiver = title
}
}
TalkApiClient.instance.friends { friends, error ->
if (error != null) {
Log.e(TAG, "카카오톡 친구 목록 가져오기 실패", error)
}
else {
Log.d(TAG, "카카오톡 친구 목록 가져오기 성공 \n${friends!!.elements?.joinToString("\n")}")
if (friends.elements?.isEmpty() == true) {
Log.e(TAG, "메시지를 보낼 수 있는 친구가 없습니다")
}
else {
System.out.println(friends.elements);
for(friend in friends.elements!!){
if(receiver == friend.profileNickname){
var receiverUuid = friend.uuid
var receiverUuids: List<String> = listOf(receiverUuid) as List<String>
var template =text
TalkApiClient.instance.sendDefaultMessage(receiverUuids, template) { result, error ->
if (error != null) {
Log.e(TAG, "메시지 보내기 실패", error)
}
else if (result != null) {
Log.i(TAG, "메시지 보내기 성공 ${result.successfulReceiverUuids}")
if (result.failureInfos != null) {
Log.d(TAG, "메시지 보내기에 일부 성공했으나, 일부 대상에게는 실패 \n${result.failureInfos}")
}
}
}
}
}