Определить наличие у клиента Viber или Telegram по номеру телефона?
спросить у клиента. так же получить у него согласие на рассылку.
Вот прям очень это надо сделать (@DevMan написал: «спросить у клиента. так же получить у него согласие на рассылку.»). Серьезно. Иначе: а) это гадство получается — читать спам спам; б) с высокой вероятностью ваш аккаунт или что там могут заблочить или ограничить в действиях. Для рассылки надо сервисы использовать и вот уже у них, я полагаю, должен быть функционал для определения наличия аккаунта в том или ином мессенджере. Есть еще вариант: добавить все телефоны в список контактов, можно сделать через импорт гугла, а потом уже смотреть через контакты в смартфоне наличие или отсутствие того или иного мессенджера. Это так, варианты навскидку, наверное, можно еще API мессенджеров использовать, но по этому вопросу — уже к документации надо обращаться и смотреть что там да как.