mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-13 13:36:15 +00:00
community[minor]: Infobip tool integration (#16805)
**Description:** Adding Tool that wraps Infobip API for sending sms or emails and email validation. **Dependencies:** None, **Twitter handle:** @hmilkovic Implementation: ``` libs/community/langchain_community/utilities/infobip.py ``` Integration tests: ``` libs/community/tests/integration_tests/utilities/test_infobip.py ``` Example notebook: ``` docs/docs/integrations/tools/infobip.ipynb ``` --------- Co-authored-by: Bagatur <baskaryan@gmail.com>
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
from typing import Dict
|
||||
|
||||
import responses
|
||||
|
||||
from langchain_community.utilities.infobip import InfobipAPIWrapper
|
||||
|
||||
|
||||
def test_send_sms() -> None:
|
||||
infobip: InfobipAPIWrapper = InfobipAPIWrapper(
|
||||
infobip_api_key="test",
|
||||
infobip_base_url="https://api.infobip.com",
|
||||
)
|
||||
|
||||
json_response: Dict = {
|
||||
"messages": [
|
||||
{
|
||||
"messageId": "123",
|
||||
"status": {
|
||||
"description": "Message sent to next instance",
|
||||
"groupId": 1,
|
||||
"groupName": "PENDING",
|
||||
"id": 26,
|
||||
"name": "PENDING_ACCEPTED",
|
||||
},
|
||||
"to": "41793026727",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.add(
|
||||
responses.POST,
|
||||
"https://api.infobip.com/sms/2/text/advanced",
|
||||
json=json_response,
|
||||
status=200,
|
||||
)
|
||||
|
||||
response: str = infobip.run(
|
||||
body="test",
|
||||
to="41793026727",
|
||||
sender="41793026727",
|
||||
channel="sms",
|
||||
)
|
||||
assert response == "123"
|
||||
|
||||
|
||||
def test_send_email() -> None:
|
||||
infobip: InfobipAPIWrapper = InfobipAPIWrapper(
|
||||
infobip_api_key="test",
|
||||
infobip_base_url="https://api.infobip.com",
|
||||
)
|
||||
|
||||
json_response: Dict = {
|
||||
"bulkId": "123",
|
||||
"messages": [
|
||||
{
|
||||
"to": "test@example.com",
|
||||
"messageId": "123",
|
||||
"status": {
|
||||
"groupId": 1,
|
||||
"groupName": "PENDING",
|
||||
"id": 26,
|
||||
"name": "PENDING_ACCEPTED",
|
||||
"description": "Message accepted, pending for delivery.",
|
||||
},
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.add(
|
||||
responses.POST,
|
||||
"https://api.infobip.com/email/3/send",
|
||||
json=json_response,
|
||||
status=200,
|
||||
)
|
||||
|
||||
response: str = infobip.run(
|
||||
body="test",
|
||||
to="test@example.com",
|
||||
sender="test@example.com",
|
||||
subject="test",
|
||||
channel="email",
|
||||
)
|
||||
|
||||
assert response == "123"
|
Reference in New Issue
Block a user